JAVA
1. 자바란?
- 자바는 썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어이다.
- 대표적인 객체지향 언어인 c++의 장점을 채택하며, 사용되지 않는 부분들을 제거해 비교적 배우기 쉽고 간결한 표현이 특징이다.
- 자바는 풍부한 클래스 라이브러리를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공한다.
2. 자바의 특징
1) 운영체제의 독립적
- 자바는 일종의 애뮬레이터인 자바가상머신(JVM)을 이용하며, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다
- 자바로 작성된 프로그램은 운영체젱 독립적이지만 JVM은 운영체제에 종송적이어서 여러 운영체제에 맞춰 JVM을 이용하면 된다.
2) 객체지향언어
- 자바는 대표적인 객체지향 프로그래밍언어이며, 상속성, 캡슈화, 다형성이 잘 적용되었다.
3) 자동 메모리 관리(Garbage Collection)
- 자바는 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 따로 메모리를 관리하지 않아도 된다.
- 가비지컬렉터가 없다면 프로그래머는 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로 진행하는 번거로움이 있을 것이다.
4) 네트워크와 분산처리를 지원
- 인터넷과 대규모 분산환경을 위해 다양한 네트워크 프로그래밍 라이브러리를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있다.
5) 멀티쓰레드 지원
- 멀티쓰레드는 일반적으로 운영체제에 따라 구현방법도 상이하며, 처리 방식도 다르다.
- 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며 관련된 라이브러리르 사용하면 구현이 쉽다.
6) 동적 로딩을 지원
- 자바로 작성된 애플리이션은 여러 개의 클래스로 구성된다.
- 자바는 동적 로딩을 지원하여서 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여서 사용할 수 있다는 장점이 있다.
3. 자바의 실행과정
자바컴파일러(javac.exe)를 사용해서 소스파일로부터 클래스 파일을 생성한다. 그 다음 자바 인터프리터로 실행한다.
JVM
1. JVM 이란?
- JVM은 'Java virtual machine'으로 '자바를 실행하기 위한 가상 기계'라 할 수 있다.
- 자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해선 반드시 JVM이 필요하다.
- 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 자바애플릴케이션은 JVM을 한번 더 거치기 때문에 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 갖고 있다.
- 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.
자주 발생하는 에러와 해결방법
1. cannot find sybol 또는 cannot resolve symbol
- 지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않는 변수나 메서드를 사용하거나 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생되는 에러
- 자바에는 대소문자 구분을 하기 때문에 철자 뿐만 아니라 대소문자의 일치여부도 꼼꼼하게 확인해야함
2. ';' exptected
- ';' 세미콜론이 필요한 곳에 없다는 에러
- 자바의 모든 문장 끝엔 ';'을 붙여줘야 함.
3. Exception in thread "main" java.lang.NoSuchMethodError: main
- 'main 메서드를 찾을 수 없다'는 에러
- 실제로 클래스 내에 main 메서드가 존재하지 않거나 메서드의 선언부 'public static void(String[] args)'에 오타를 확인
4. Exception in thread "main" java.lang.NoClassDefFoundError: Hello
- 'Hello'라는 클래스를 찾을 수 없다는 에러
- 클래스의 대소문자를 확인해보고, 클래스파일(*.class)가 생성되었는지 확인
- 클래스파일이 존재하는데도 동일한 에러가 발생하면 클래스 패스의 설정이 올바른지 확인
5. illegal start of expression
- 문장의 문법적 오류가 있다는 에러
- 간단히 괄호 '(', '{' 를 열고서 닫지 않거나, if나 for문 등에 문법적 오류가 났을 때, public 이나 static 같은 키워드를 잘못 사용할 경우에도 발생
6. class, interfacem or enum expected
- '키워드 class나 interface 또는 enum이 없다'의 에러지만 보통 괄호 '{' 또는 '}'의 개수가 일치 하지 않는 경우에 발생
출처
'Java의 정석' - 남궁성
이 책을 공부하면서 기록하기 위하여 작성하였습니다.
'프로그래밍공부 > JAVA' 카테고리의 다른 글
JVM의 구조와 자바의 실행 (0) | 2022.07.17 |
---|---|
JAVA - 변수 (0) | 2021.10.01 |