Java의 정석: CHAPTER 01 자바를 시작하기 전에

mucha·2023년 4월 12일

Java의 정석

목록 보기
1/6
post-thumbnail

CHAPTER 01 자바를 시작하기 전에

1. 자바 (Java Programming Language)


1.1 자바란?

객체지향 프로그래밍 언어.
운영체제의 종류에 관계없이 실행이 가능.
객체지향개념과 C++의 장점을 채택하는 동시에 잘 사용되지 않는 부분은 과감히 제외, 비교적 배우기 쉽고 이해하기 쉬운 간결한 표현 가능.

1.2 자바의 역사

C++의 장점을 도입하고 단점을 보완한 새로운 언어.
1996년 1월 자바의 정식 버전 발표.

1.3 자바언어의 특징

  1. 운영체제에 독립적
    자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달.
    자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행 가능.
    Write once, run anywhere.
  2. 객체지향언어
    객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어
  3. 비교적 배우기 쉬움
    연산자와 기본구문은 C++에서, 객체지향관련 구문은 스몰톡이라는 객체지향언어에서 가져옴.
  4. 자동 메모리 관리
    가비지컬렉터가 자동적으로 메모리를 관리.
  5. 네트워크와 분산처리 지원
    인터넷과 대규모 분산환경을 염두에 두어 풍부하고 다양한 네트워크 프로그래밍 라이브러리를 지원.
  6. 멀티쓰레드 지원
    멀티쓰레드 프로그램은 시스템과는 관계없이 구현 가능.
    여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당.
  7. 동적 로딩 지원
    실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용.
    일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 됨.
    애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로 처리할 수 있는 유연한 애플리케이션 작성 가능.

1.4 JVM (Java Virtual Machine)

JVM: 자바를 실행하기 위한 가상 기계
자바로 작성된 애플리케이션은 모드 JVM에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해서는 JVM이 반드시 필요.
일반 애플리케이션과 달리 JVM을 한 번 더 거치기 때문에, 실행 시에 interpret 되기 때문에 속도가 느리다는 단점 있음.

Java 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경 없이 실행 가능.
단, JVM은 OS에 종속적이라 해당 OS에서 실행가능한 JVM 필요.

2. 자바개발환경 구축하기


2.1 자바 개발도구 (JDK) 설치하기

JDK 설치 → JVM과 Java API외에 자바를 개발하는데 필요한 프로그램들이 같이 설치.
JDK의 bin 디렉토리를 path에 추가해줘야함.

JDK bin 디렉토리 주요 실행파일

  • javac.exe
    자바 컴파일러. 자바소스코드를 바이트 코드로 컴파일.
    c:\jdk1.8\work>javac Hello.java
  • java.exe
    자바 인터프리터. 컴파일러가 생성한 바이트코드를 해석하고 실행.
    c:\jdk1.8\work>java Hello
  • javap.exe
    역어셈블러. 컴파일된 클래스파일을 원래의 소스로 변환.
    c:\jdk1.8\work>javap Hello > javac Hello.java
  • javadoc.exe
    자동문서생성기. 소스파일에 있는 주석을 이용하여 Java API문서와 같은 형식의 문서를 자동으로 생성
    c:\jdk1.8\work>javadoc Hello.java
  • jar.exe
    압축프로그램. 클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일로 압축하거나 압축해제.
    압축할 때: c:\jdk1.8\work>jar cvf Hello.jar Hello1.class Hello2.class
    압축 풀 때: c:\jdk1.8\work>jar xvf Hello.jar

2.2 Java API문서 설치하기

Java API를 잘 사용하기 위해서는 Java API 문서가 필수적.
http://java.sun.com 에서 다운받을 수 있음.

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


3.1 Hello.java

class Hello { 
      public static void main(String[] args) { 
            System.out.println("Hello, world."); // 화면에 글자 출력
      } 
}

Hello.java 작성 → javac.exe 컴파일 → Hello.class 작성 → java.exe 실행 → “Hello, world.” 출력

class 클래스이름 { 
      public static void main(String[] args) { 
            //실행될 문장 적는다
      } 
}

하나의 Java 애플리케이션에는 main메서드를 포함한 클래스가 반드시 하나는 있어야한다.
main메서드 없이는 Java 애플리케이션은 실행될 수 없음.
하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능.

주의! 소스파일의 이름은 public class의 이름과 일치해야 함.

올바른 작성 예설명
Hello2.java
public class Hello2 {}
class Hello3 {}
public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야 함
Hello2.java
class Hello2 {}
class Hello3 {}
public class가 하나도 없는 경우, 소스파일의 이름은 ‘Hello2.java’, ‘Hello3.java’ 둘 다 가능.

잘못된 작성 예설명
Hello2.java
public class Hello2 {}
public class Hello3 {}
하나의 소스파일에 둘 이상의 public class가 존재하면 안됨.
각 클래스를 별도의 소스파일에 나눠서 저장하던가
둘 중의 한 클래스에 public을 붙이지 않아야 함.
Hello3.java
public class Hello2 {}
class Hello3 {}
소스파일의 이름이 public class의 이름과 일치하지 않음.
소스파일의 이름을 ‘Hello2.java’로 변경해야 함.
hello2.java
public class Hello2 {}
class Hello3 {}
대소문자까지 일치해야함.

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

  1. cannot find symbol 또는 cannot resolve symbol
    저장된 변수나 메서드를 찾을 수 없다.
    변수 또는 메서드의 이름을 잘못 사용한 경우.
  2. ‘;’ expected
    세미콜론이 필요한 곳에 없다.
  3. Exception in thread “main” java.lang.NoSuchMethodError: Main
    main메서드를 찾을 수 없다.
    클래스 내에 main이 없거나 main 선언부에 오타가 있는 경우.
  4. Exception in thread “main” java.lang.NoClassDefFoundError: Hello
    Hello라는 클래스를 찾을 수 없다.
    클래스 Hello의 철자, 대소문자 확인하고 이상없으면 클래스파일이 생성되어있는지 확인
  5. illegal start of expression
    문장, 수식 오류
    괄호 확인, if for문 확인, public이나 static 같은 키워드를 잘못 사용한 경우.
  6. class, interface, or enum expected
    class나 interface 또는 enum이 없다. 이지만 보통 괄호의 개수가 일치하지 않는 경우.

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

내부적인 진행순서
1. 프로그램의 실행한 필요한 클래스 (*.class파일)를 로드.
2. 클래스파일을 검사.
3. 지정된 클래스에서 main 호출
4. main의 첫 줄 부터 코드 실행 → 마지막 코드까지 모두 실행
5. 프로그램 종료, 사용했던 자원 모두 반환.

3.4 주석(comment)

/* 범
	위
	주
	석*/

// 한 줄 주석

3.5 이 책으로 공부하는 방법

  • 1 ~ 5
  • 6 ~ 9
    • 6장: 객체지향 개념의 핵심
    • 7장: 객체지향 개념의 핵심2. 6장을 이해한 후 볼것
    • 9장: 자바의 가장 기본적인 내용
  • 10 ~ 16
    • 10장: 확인하고 필요할 때 책을 보고 사용할 수 있을 정도로만
    • 11장: 가장 어려움. 어떤 클래스들이 있고 어떤 결과를 얻을 수 있다는 정도.
    • 12장: 지네릭스 중요,
    • 13장: 쓰레드가 어떤 것인지에 대한 감으 잡는 정도
    • 14장: 건너뛰어도 무방
    • 15장: 꼭 학습해야하는 중요한 파트
    • 16장: 15장을 충분히 이해한 다음에 학습해야함.

0개의 댓글