일반적으로, 프로그래밍 언어(ex C, C++, JAVA, Python)은 고급 언어라고 한다.
- 기계어(0,1)을 이해하기 어렵기에 사람의 언어와 기계어의 다리역활
- 고급 언어(사람의 언어) -> 컴파일 -> 기계어
- 저급 언어(기계어에 가까움) ex)어셈블리어
프로그램이란 컴퓨터에서 특정 목적을 수행하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역 한 것
- 소스 : 고급언어로 작성된 내용
- 소스 -> 컴파일 -> 기계어
이식성 : 다른 실행 환경을 가진 시스템 간 프로그램 실행 가능 (ex 리눅스<->윈도우<->Mac OS)
-
이식성(portability)이 높다.
-
자바 실행 환경 JRE(Java Runtime Environment)이 있다면, 소스 파일 수정, 재컴파일 과정이 필요하지 않다.
-
자바는 아무리 작은 프로그램이라도 객체를 만들어 사용한다.
-
함수적 스타일 코딩을 지원한다.
-
메모리를 자동으로 관리한다. (Garbage Collector)
-
다양한 애플리케이션을 개발할 수 있다. (다양한 운영체제에서 사용 가능하다.)
-
멀티 스레드를 쉽게 구현할 수 있다. 자바는 스레드 생성 및 제어와 관련된 라이브러리를 제공한다. (운영체제에 상관이 없다!)
-
동적 로딩(Dynamic Loading)을 지원한다.
동적 로딩이란? 애플리케이션이 실행될 때 모든 객체가 생성되는 것이 아니라, 필요한 시점에서 로딩이 된다. 즉, 유지보수가 발생하더라도 해당 클래스만 재컴파일하면 된다.(전체를 컴파일할 필요가 없다.)
- 막강한 오픈소스 라이브러리가 풍부하다.
- 자바 프로그램 != 완전한 기계어
- 이를 해석하는 가상의 운영체제 -> JVM
- 바이트 코드(*.class)는 모든 JVM에 동일한 실행 결과를 보장하지만 (
Thread도요?) JVM은 운영체제에 종속적이다.
JDK 설치 -> 환경 변수 설정(+버전확인)
- 소스파일 (*.java) -(컴파일러, javac.exe)> 바이트코드 파일(*.class) -> JVM 구동(java.exe) -> 기계어
- 클래스 : 필드/메소드를 포함하는 블록
public class Hello{
}
- 메소드 : 어떤 일을 처리하는 실행문을 모아놓은 블록
public static void main(String[] args){
}
알고 계셨나요? JVM은 main() 메소드를 먼저 찾아서 실행 시킵니다.
이를 entry point 라고도 합니다. main() method가 없는 클래스를 실행시키면 에러를 뱉습니다. (psvm)
기호 | // | /*~*/ |
---|---|---|
기능 | 행 주석 | 범위 주석 |
- 실행문 : 변수 선언, 값 저장, 메소드 호출에 해당하는 코드를 말한다
- 실행문에 마지막에 반드시 세미콜론(;)을 붙여야 한다. (컴파일러는 실행문의 끝을 세미콜론으로 구분한다.)