Java/Java의 정석

[Java의 정석] 01. 자바란

동현 유 2022. 3. 2. 16:18
모르는 것만 짧고 빠르게 정리한 노트입니다.

 

 

자바란

  현재는 오라클 사에 인수된 썬 마이크로시스템즈에 의해 개발된 객체지향 프로그래밍 언어이다. JVM 때문에 운영체제에 독립적인 이식성(portability)이 뛰어난 언어이다. 전통적인 컴파일러와 인터프리터의 성격을 모두 갖는 하이브리드 컴파일러의 특성을 갖고 있다. 소스코드는 javac(java compliler) 에 의해 bytecode 로 변환된 후 java(java interpreter) 에 의해 런타임으로 해석된다.

자바와 같은 언어가 채택하고 있는 방식, 컴파일된 바이트 코드를 런타임으로 해석한다.
전통적인 컴파일러, 전체 소스코드를 executable하게 컴파일한다. c c++ 등이 그 예시이다.
인터프리터. 런타임으로 line by line 해석한다. 파이썬에서 채택하고 있는 방식이다.

 

자바 언어의 특징
  1. 운영체제에 독립적이다.
  2. 객체지향 언어이다.
  3. 비교적 배우기 쉽다.
  4. Garbage Collection 으로 프로그래머가 메모리 관리에 신경을 덜 써도 된다.
  5. 네트워크와 분산처리를 지원한다.
  6. 멀티쓰레드를 지원한다.
  7. 동적 로딩을 지원한다. (필요한 시점에 클래스를 로딩하여 사용할 수 있다. 인터프리터의 특징이 있어서 가능한 듯)

 

JVM (JAVA Virtual Machine)

  전통적인 방식의 컴파일러를 통해 실행되는 코드들은 바로 OS만 거쳐 하드웨어로 전달되는데 비해, Java 코드는 bytecode 로 변환된 후에 JVM 을 거쳐 런타임에 해석되어 OS를 거친다. 그래서 속도가 느리다는 단점이 있지만, 바이트코드를 기계어(어셈블리어)로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술로 속도가 향상되었다.

  이렇게 불필요하게 보이는 JVM 을 한단계 더 거치는 이유는 바로 이식성(Portability) 때문이다. OS 에 맞는 JVM 만 선택하면 해당 JVM 위에서는 동일한 코드가 동일한 결과를 보장할 수 있기 때문이다. 단적인 예로 visual c++ 위에서 작성한 c++ 코드와 gcc 위에서 작성한 c++ 코드는 동일한 결과를 보장하지 않는다!

 

자바 프로그램 작성하기
  • 주석을 제외한 모든 코드는 클래스 블럭 내에서 작성되어야 한다.
  • public static void main(String[] args) 는 java.exe 에 의해 호출될 수 있도록 미리 약속된 부분이므로, 프로그램에 main 메서드를 포함한 클래스가 반드시 하나는 있어야한다.
  • 소스코드 파일에는 여러개의 클래스를 정의할 수 있지만, public class 는 한 개만 존재할 수 있다. 그 때 public class 의 이름과 코드 파일의 이름은 동일해야한다.