Chapter 1 자바를 시작하기 전에

Jun-hee Cho·2023년 3월 20일
0

Java

목록 보기
2/13

1. 자바(Java Programming Language)

1.1 자바란?

자바는 썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어이다.

자바의 가장 중요한 특징은 운영체제에 독립적이라는 거싱다. 자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다. -> 컴퓨터와 운영체제가 공존하는 인터넷 환경에 적합한 언어

자바는 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공 -> 클래스 라이브러리만 활용해도 강력하게 사용

1.2 자바의 역사

1991년: 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작
1996년: 1월에 자바의 정식 버전을 발표

1.3 자바언어의 특징

  1. 운영체제에 독립적이다
  2. 객체지향언어이다.
  3. 비교적 배우기 쉽다.
  4. 자동 메모리 관리(Garbage Collection)
  5. 네트워크와 분산처리를 지원한다.
  6. 멀티쓰레드를 지원한다.
  7. 동적 로딩(Dynamic Loading)을 지원한다.

1.4 JVM(Java Virtual Machine)

JVM은 'Java virtual machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다.

자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.


-> 자바의 중요한 장점 중의 하나인 "Write once, run anywhere.(한 번 작성하면 어디서든 실행된다.)"이 가능하게 되는 것이다.

2. 자바 개발환경 구축하기(생략)

3. 자바로 프로그램 작성하기

3.1 Hello.java

public class Exercise { // Exercise는 클래스이름, 주석을 제외한 모든 코드는 클래스의 블럭 {} 내에 작성해야한다.
	public static void main(String[] args) { // main메서드의 선언부
		System.out.println("Hello, world."); // 화면에 글자를 출력한다.		
	}
}



3.2 자주 발생하는 에러와 해결방법

  1. cannot find symbol 또는 cannot resolve symbol
    지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자 구분을 하기 때문에 철자 뿐 만아니라 대소문자의 일치여부도 꼼꼼하게 확인해야한다.

  2. ';' expected
    세미콜론';'이 필요한 곳에 없다는 뜻이다. 자바의 모든 문장의 끝에는 ';'을 붙여주어야 하는데 가끔 이를 잊고 실수하기 쉽다.

  3. Exception in thread "main" java.lang.NoSuchMethodError: main
    'main메서드를 찾을 수 없다.'는 뜻인데 실제로 클래스 내에 main메서드가 존재하지 않거나 메서드의 선언부 'public static void main(String[] args)'에 오타가 존재하는 경우에 발생한다.
    이 에러의 해결방법은 main메서드가 클래스에 정의되어 있는지 확인하고, 정의되어 있다면 main메서드의 선언부에 오타가 없는지 확인한다. 자바는 대소문자를 구별하므로 대소문자의 일치여부까지 정확히 확인해야한다.

  4. Exception in thread "main" java.lang.NoClassDefFoundError: Hello
    'Hello라는 클래스를 찾을 수 없다.'는 뜻이다. 클래스 'Hello'의 철자, 특히 대소문자를 확인해보고 이상이 없으면 클래스파일(*.class)이 생성되었는지 확인한다.
    예를 들어 'Hello.java'가 정상적으로 컴파일 되었다면 클래스파일 'Hello.class'가 있어야한다. 클래스파일이 존재하는데도 동일한 메시지가 반복해서 나타난다면 클래스패스(classpath)의 설정이 바르게 되었는지 다시 확인해보자.

  5. illegal start of expression
    직역하면 문장(또는 수식, expression)의 앞부분이 문법에 맞지 않는다는 의미인데, 간단히 말해서 문장에 문법적 오류가 있다는 뜻이다. 괄호'(' 나 '{'를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을 때 또는 public이나 static과 같은 키워드를 잘못 사용한 경우에도 발생한다. 에러가 발생한 곳이 문법적으로 옳은지 확인하라.

  6. class, interface, or enum expected
    이 메시지의 의미는 '키워드 class나 interface 또는 enum이 없다.'이지만, 보통 괄호 '{' 또는 '}'의 개수가 일치 하지 않는 경우에 발생한다. 열린괄호 '{'와 닫힌괄호 '}'의 개수가 같은지 확인하자.

실제 에러가 발생했을 때 아래의 순서대로 처리

  1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다.
    이상이 없으면 해당 코드의 주위(윗줄과 아래 줄)도 함께 살펴본다.
  2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다.
    대부분의 에러는 사소한 것인 경우가 많다.
  3. 의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트 한다.

3.3 자바프로그램의 실행과정

내부적인 진행순서는 다음과 같다.

  1. 프로그램의 실행에 필요한 클래스(*.class파일)를 로드한다.
  2. 클래스파일을 검사한다.(파일형식, 악성코드 체크)
  3. 지정된 클래스(Hello)에서 main(String[] args)를 호출한다.

main메서드에서의 첫 줄부터 코드가 실행되기 시작하며 마지막 코드까지 모두 실행되면 프로그램이 종료되고, 프로그램에서 사용했던 자원들은 모두 반환된다.

만일 지정된 클래스에 main메서드가 없다면 다음과 같은 에러 메시지가 나타날 것이다.

Exception in thread "main" java.lang.NoSuchMethodError: main

3.4 주석(comment)

주석을 이용해서 프로그램 코드에 대한 설명을 적절히 덧붙여 놓으면 프로그램을 이해하는 데 많은 도움이 된다.
그 외에도 주석은 프로그램의 작성자, 작성일시, 버전과 그에 따른 변경이력 등의 정보를 제공할 목적으로 사용된다.

주석을 작성하는 방법은 다음과 같이 두 가지 방법이 있다.

▶︎ 범위 주석 - '/*' 와 '*/' 사이의 내용은 주석으로 간주된다.
▶︎ 한 줄 주석 - '//' 부터 라인 끝까지의 내용은 주석으로 간주된다.

3.5 이 책으로 공부하는 방법

이 책은 크게 3부분, 1장부터 5장까지, 6장부터 9장, 그리고 나머지 부분으로 나눌 수 있다.
2장 ~ 5장: 기본적인 내용이 익숙해지면, 그 다음 단계인 6장으로 넘어가야 한다.
6장 ~ 7장: 반복하면 반복할수록 이해가 깊어지므로, 앞으로도 꾸준히 가볍게 복습하는 것이 좋다. 동영상 강의를 참고할 것!
9장: 자바의 가장 기본적인 내용이므로 9장까지 마치고 나면 2장부터 9장까지 전체적으로 한번 복습하면 좋다.
10장 ~ 16장: 자바의 응용부분이므로 앞부분을 충분히 이해하지 않고는 학습하기 어렵다. 이중에서 11장, 12장과 15장을 제외하고 나머지는 필요할 때 공부해도 좋다.
10장: 어떤 클래스들이 있는지 확인하고 필요할 때 책을 보고 사용할 수 있을 정도로만 공부하면 된다.
11장: 지금까지 배운 것들을 전부 활용하고 자료구조의 원리까지 들어가므로 책 전체에서 가장 어렵다. 처음엔 각 클래스의 특징과 사용법 정도만 확인하고 넘어가야 한다.
12장: 지네릭스가 중요, 기본적인 사용법만 익히고 다른 장들을 공부하면서 막히는 부분을 다시 복습하는 식으로 공부하면 좋다
13장: 쓰레드에 대한 것인데, 일단 쓰레드가 어떤 것인지에 대한 감을 잡는 정도로만 공부하고, 나중에 필요할 때 자세히 보는 것이 좋다.
14장: 람다와 스트림은 자바에 새로 추가된 최신 기능으로 아직은 실무에서도 잘 사용되지 않는다.
15장: 이 책의 후반부에서 꼭 학습해야하는 중요한 부분이다.
16장: 필수적으로 공부하지 않아도 되므로 건너뛰어도 좋다.

profile
최고가 되기 위해 최선을...

0개의 댓글