Java Standard - 자바를 시작하기 전에
자바를 시작하기 전에, 자바란 무엇인지 알아보자
자바
자바란?
객체지향 프로그래밍 언어로 가장 중요한 특징은 운영체제에 독립적이라는 것, 때문에 운영체제에 따라 프로그램을 전혀 변경하지 않고 실행이 가능하다.
자바의 역사
1991년 오크(Oak): C++언어의 장점을 도입하고 단점을 보완한 새로운 언어 개발 → 1996년 1월 자바(JAVA): 언어 사용 목적 변경(소형 기기 → 인터넷)에 따른 이름 변경
자바 언어의 특징
- 운영체제에 독립적
JVM
을 통해 가능 한 것, 자바 응용프로그램은 JVM랑만 통신하고 **JVM은 전달받은 명령을 운영체제가 이해할 수 있도록 변환해 전달 자바는 운영체제에 독립적이지만, JVM은 운영체제에 종속적, 각 운영체제에서 설지할 수 있는 다른버전의 JVM 존재- 객체지향언어
- 객체지향 개념의 특징인
상속
,캡슐화
,다형성
이 잘 적용되어있다. - 자동 메모리 관리
가비지 컬렉터
가 자동적으로 메모리를 관리해주기 때문에 개발자가 관리할 일이 없다.- 네트워크와 분산처리 지원
- 네트워크 프로그래밍 라이브러리를 통해 지원해준다.
- 멀티쓰레드 지원
- 시스템과는 관계 없이 구현이 가능하고, 여러 쓰레드에대한 스케줄링을 자바 인터프리터가 담당하게 된다.
- 동적 로딩 지원
- 실행 시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다. ⇒ 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되고, 변경사항이 발생해도 비교적 적은 작업으로 처리할 수 있다.
JVM
JVM을 ‘자바를 실행하기 위한 가상 컴퓨터’라고 생각하면 좋을거같다. java 애플리케이션은 JVM과만 통신하고, JVM은 java 애플리케이션이 내린 명령을 운영체제가 이해할 수 있도록 변환해 전달하는 역할을 한다. 일반 애플리케이션은 OS만 거치면 하드웨어에게 전달이 되는데, java 애플리케이션은 JVM을 한번 더 거치기도 하고, 하드웨어에 맞게 완전히 컴파일 된 상태가 아니라 실행 시에 해석 되기 때문에 속도가 느리다는 단점이 있다.
자바개발환경 구축하기
JDK
JDK란 자바 개발키트로, JVM과 자바클래스 라이브러리, 개발하는데 필요한 프로그램들이 포함된다.
JDK(자바 개발 도구) 구성
- JRE(자바 실행 환경, 자바로 작성된 응용프로그램이 실행되기 위한 최소환경)
- JVM
- 클래스 라이브러리 (Java API)
- 개발에 필요한 실행파일 : javac, java, javap,,,등
설치 순서
- JDK 설치
설치경로\jdk\bin
PATH 설정
환경변수 PATH OS가 파일의 위치(디렉토리)를 파악하는데 사용하는 경로로, 이곳에 디렉토리를 등록하면 해당 디렉토리에 포함된 파일을 파일 경로없이 이름만으로도 사용할 수 있다
jdk\bin
에 있는 주요 실행 파일 javac.exe : 자바 컴파일러, java 소스코드 → 바이트코드 컴파일 java.exe: 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행 javap.exe: 역어셈블리어, 컴파일된 클래스파일을 원래의 소스코드로 변환 javadoc.exe: 자동문서생성기,/** */
와 같은 주석을 이용해 문서를 자동으로 생성 jar.exe: 압축프로그램, 프로그램의 실행에 관련된 파일을 하나의 jar로 압축, 압축해제
자바로 프로그램작성하기
자바프로그램의 실행과정
1
2
3
4
5
Class Hello {
public static void main(String[] args){
System.out.println("Hi");
}
}
Hello.java
위의 코드를 실행하기 위해서는 어떻게 해야할까?
- javac.exe 자바 컴파일러를 사용해 클래스 파일을 생성해야한다.
Hello.java
— javac.exe 컴파일 →Hello.class
- java.exe 자바 인터프리터를 사용해 클래스 파일을 실행한다.
Hello.class
— java.exe 실행 → 코드 내용 실행
- 프로그램 실행에 필요한 클래스(.class)파일을 로드
- 클래스파일을 검사(파일형식, 악성코드 체크)
- 지정된 클래스(실행하는 클래스파일)에서
main(String[] args)
를 호출
public static void main(String[] args){ }
는 Java 애플리케이션의 시작점 Java 애플리케이션을 실행할 때는 이 main 메서드가 있는 클래스를 실행해야한다.
주석
주석은 3가지 종류가 있는데, 주석의 내용이 아무리 길다고해도 컴파일러는 주석을 무시하고 건너뛰기 때문에 컴파일 결과는 정확히 일치한다.
종류
- 한줄 주석
//
- 여러줄 주석
/* */
- 문서 주석
/** */