이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다.
Chapter 1

자바를 시작하기 전에
자바언어의 특징
- 운영체제에 독릭적이다.
- 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM을 통해서 통신을 하고 JVM이 전달받은 명령을 운영체제가 이해할 수 있도록 변환한다.
- 자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행 가능하며(Write once, run anywhere)고 표현한다.
- 객체지향언어이다.
- oop중 하나로 객체지향개념의 특징인 상속,캡슐화,다형성이 잘 적용된 객체지향언어이다..
- 자동 메모리 관리(carbage Collection)
- c언어와 달리 자바로 작성된 프로그램은 가비지컬렉터가 자동적으로 메모리를 관리해주기에 메모리를 따로 관리하지 않아도 된다.
- 네트워크와 분산처리를 지원한다.
- 인터넷과 대규모 분산환경을 염두에 둔 까닭인지 다양한 java API를 통해 비교적 짧은 시간에 프로그램을 쉽게 개발 할 수 있도록 지원한다.
- 멀티 쓰레딩을 지원한다.
- 운영체제마다 멀티 쓰레딩을 지원하는 방식이 다르나 java는 시스템과 관계없이 구현된다
- 동적 로딩을 지원한다.
- 동적 로딩을 지원함으로 실행시가 아니라 필요한 시점에 쿨래스를 로딩하여 사용할 수 있다.
JVM
자바 가상 기계(java virtual machine)의 줄인 자바를 실행하기 위한 가상 기계이다. 자바 어플리케이션은 다른 애플리케이션 코드와 다르게 JVM을 필수로 거치고 OS를 거친다. 자바 어플리케이션은 JVM과 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에도 프로그램의 변경없이 실행 가능하다. 단점으로는 OS를 바로 거치지 않고 실행시에 interpret되기 때문에 속도가 떨어진다는 단점이있다.

자주 발생하는 에러
- cannot find(resolve) symbol
- 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용학나 변수 또는 메서드의 이름을 잘못사용한 경우에 발생한다.
- ";" expected
- 세미클론이 필요한 곳에 없다는 뜻이다.
- Exception in thread "main" java.lang.NoSuchethodError: main
- 메서드를 찾을 수 없다는 뜻이다. 클래스 내에 메서드가 존재하지 않거나 메서드 선언부에 오타가 존재하는 경우 방생한다.
- Exception in thread "main java.lang.NoClassDefFoundError:~
- ~라는 클레스를 찾을 수 없다는 뜻이다. 클레스 파일이 존재하는데도 동일한 메싲;기 니티닌디면 클래스 패스의 설정이 바르게 되었는지 확인해야 한다.
- illegal start of expression
- 문장에 문법적 오류가 있다는 뜻이다. 에러가 발생한 곳이 문법적으로 옳은지 확인해야 한다.
- class, interface, or enum expected
- 키워드 class 나 interface 또는 enum이 없다는 뜻이나 보통 괄호의 개수가 일치 하지 않는 경우에 발생한다. 괄호의 개수가 같은지 확인해야 한다.
주석(comment)
- 작성하는 프로그램의 크기가 커질수록 프로그램을 이해하고 변경한는 일이 점점 어려워 진다. 이러한 어려움을 덜기 위해 사용하는 것이 주석이다. 주석을 이용해서 프로그램 코드에 대한 설명을 적절히 덧붙여 놓으면 프로그램을 이해하는데 많은 도움이 된다.
- 전에 읽었던 클린코드의 내용에 따르면 주석을 지양하라는 내용이 많았다.코드에 대한 이해도를 높이기 위해 주석을 사용하는 것은 좋으나 주석에 의존하지 말고 좋은 코드를 짜기 위해 노력을 하는게 좋다고 생각한다.
'자바의 정석' 카테고리의 다른 글
| 자바의 정석 5장 (0) | 2023.06.06 |
|---|---|
| 자바의 정석 3장 (0) | 2023.06.01 |
| JVM 메모리 구조 (0) | 2023.05.30 |
| 객체 지향 언어와 절차 지향 언어 (0) | 2023.05.30 |
| 자바의 정석 2장 (0) | 2023.05.27 |