1. 자바를 시작하기 전에
1. 자바(Java Programming Language)
1.1 자바란?
- 1996년 1월에 썬 마이크로시스템즈에서 개발했고, 2010년에 오라클이 썬 인수
- 객체지향개념 + C++의 장점 채택
- 풍부한 라이브러리와 다양한 최신기술 지원(J2ME, J2EE, XML, ...)
1.2 자바의 역사
자바의 시작
- 1991년에 썬 개발자들이 Oak 언어를 개발한 것에서 시작
- C++로 가전제품에 탑재할 소프트웨어를 개발하다 한계를 느끼고 새로운 언어인 Oak를 개발
- 인터넷이 등장하면서 OS에 독립적인 Oak가 주목받기 시작했고, Oak를 인터넷에 적합하도록 개발
- 1996년 1월, Java 정식버젼 발표
자바 버전업 역사
- JDK Beta (1995)
- JDK 1.0 (1996)
- JDK 1.1 (1997)
- J2SE 1.2 (1998)
- J2SE 1.3 (2000)
- J2SE 1.4 (2002)
- J2SE 5.0 (2004)
- Java SE 6 (2006)
- Java SE 7 (2011)
- Java SE 8 (2014)
참조 : https://en.wikipedia.org/wiki/Java_version_history
- Java 8에 대한 모든것 : http://www.moreagile.net/2014/04/AllAboutJava8.html
- Java 버전별 특징 : http://docs.oracle.com/javase/8/docs/technotes/guides/language/enhancements.html#javase8
1.3 자바언어의 특징
- 운영체제에 독립적이다.
- JVM을 사용하기 때문이다.
- Write once, run anywhere.
- 객체지향언어이다.
- 비교적 배우기 쉽다.
- C++을 안다면 쉬울 것이다......?
- 자동 메모리 관리(Garbage Collection)
- 네트워크와 분산처리를 지원한다.
- 멀티쓰레드를 지원한다.
- 라이브러리를 지원한다는 이야기.
- 동적 로딩(Dynamic Loading)을 지원한다.
- 클래스를 사용할 때 동적으로 불러온다.
THE Java® programming language is a general-purpose, concurrent, classbased, object-oriented language.
The Java programming language is strongly and statically typed.
The Java programming language is a relatively high-level language, in that details of the machine representation are not available through the language.
It includes automatic storage management, typically using a garbage collector, to avoid the safety problems of explicit deallocation (as in C's free or C++'s delete)
The Java programming language is normally compiled to the bytecode instruction set and binary format.
출처 : The Java® Language Specification Java SE 8 Edition (https://docs.oracle.com/javase/specs/jls/se8/jls8.pdf)
1.4 JVM(Java Virtual Machine)
- 자바 애플리케이션은 JVM 위에서만 동작한다.
- 기계어로 변환되어 바로 동작하는 다른 언어들에 비해 속도가 느린 한계가 있다.
- 최적화 기술과 JIT 컴파일러로 극복하는 중이다.
2. 자바개발환경 구축하기
2.1 자바 개발도구(JDK) 설치하기
JRE, JDK...?
- JRE - 자바 실행 환경 (Java Runtime Environment)
- JVM + Java API
- JDK - 자바 개발 도구 (Java Development Kit)
- JRE + 개발에 필요한 프로그램들
JDK 다운로드 경로: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
맥에서 jdk 위치
~ $ ls -l `whereis javac`
lrwxr-xr-x 1 root wheel 75 12 18 19:24 /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
jdk에 포함된 executable들
- javac : 자바 컴파일러. 자바 소스코드 -> 바이트코드 컴파일
- java : 자바 인터프리터. 컴파일러가 생성한
- javap : 역어셈블러. 컴파일된 클래스 파일 -> 원래 소스코드로 변환
- javadoc : 소스파일에 있는 주석 -> java api 형식의 문서를 자동으로 생성
- jar : 클래스파일 + 프로그램 실행관련 파일 -> 압축/해제
2.2 자바 API문서 설치하기
JDK 8 문서 다운로드
Java 8 API 문서 살펴보기
3. 자바로 프로그램 작성하기
3.1 Hello.java
Hello.java
class Hello {
public static void main(String[] args) {
System.out.println("Hello, world."); // 화면에 글자를 출력한다.
}
}
컴파일하고 실행하기
~/workspace/javastudy/ch1 $ javac Hello.java
~/workspace/javastudy/ch1 $ ls
Hello.class Hello.java
~/workspace/javastudy/ch1 $ java Hello
Hello, world.
클래스
Java의 모든 코드는 반드시 클래스 안에 존재해야 한다.
class 클래스이름 {
/*
주석을 제외한 모든 코드는 클래스의 블럭{} 내에 작성해야한다.
*/
}
Java의 main
- 하나의 Java application은 반드시 main을 포함한 class를 하나 가져야한다.
The method main must be declared public, static, and void. It must specify a formal parameter (§8.4.1) whose declared type is array of String. Therefore, either of the following declarations is acceptable:
public static void main(String[] args)
public static void main(String... args)
source file 이름 규칙
- 하나의 source file에 하나 이상의 class를 정의할 수 있다.
- source file의 이름은 반드시 source file에 정의한 public class의 이름이어야 한다.
- source file에 public class가 정의되지 않은 경우 아무 이름이나 상관없다.
file 이름과 public class 이름이 다를 때.
Hello.java
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello, world."); // 화면에 글자를 출력한다.
}
}
컴파일 결과
~/workspace/javastudy/ch1 $ javac Hello.java
Hello.java:1: error: class HelloJava is public, should be declared in a file named HelloJava.java
public class HelloJava {
^
1 error
public class가 없는 source file의 이름
Test.java
class FirstClass {
}
class SecondClass {
}
~/workspace/javastudy/ch1 $ ls
Hello.java Test.java
~/workspace/javastudy/ch1 $ javac Test.java
~/workspace/javastudy/ch1 $ ls
FirstClass.class Hello.java SecondClass.class Test.java
3.2 자주 발생하는 에러와 해결방법
- 세미콜론, 괄호({}, [], ())를 빼먹는 실수를 하지 말자.
- source file 이름을 public class 이름으로 정하자.
3.3 자바프로그램의 실행과정
- 클래스( .class)파일 로드
- 클래스파일 검사(파일형식, 악성코드 체크)
- 지정된 클래스에서 main호출
- main 처음~끝 순서대로 실행하고
- 종료하면 자원 반환
3.4 주석(comment)
여러 줄의
/*
여러
줄의
주석이죠
*/
와 한 줄의
// 주석이야
모두 사용 가능
3.5 이 책으로 공부하는 방법
- 2장 ~ 9장 : 자바의 기본적인 내용
- 6장, 7장은 객체지향 개념을 설명하므로 잘 숙지해야 한다.
- 10장 ~ 16장 : 자바의 응용부분
- 11, 12, 15장을 제외하고는 나중에 필요할 때 공부하면 된다.
저자의 한마디
- 길을 잃지 말자.
- 비교하지 말자.