1. 언어의 역사
컴퓨터
- 0과 1밖에 이해하지 못함
- 매우 빠르고 정확
기계어
: 컴퓨터가 이해할 수 있게 표현되어 있는 언어
사람 입장에서는 기계어가 매우 복잡하고 어렵다.
이를 해결하기 위해 기계 명령어와 일상 용어를 일대일로 매칭하는 기계어와 니모닉의 매칭 코드표를 만들었다.
2. 어셈블리어
어셈블러
: 어셈블리어를 기계어로 번역해주는 SW
어셈블리어
: 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
- 어셈블리어의 등장으로 많은 개발자들이 편해졌다.
하지만, CPU 마다 실행할 수 있는 기계어가 달랐기 때문에 어셈블리어도 다르게 만들어져 CPU에 따라 어셈블리어를 다시 공부해야한다는 단점이 존재했다.이를 해결하기 이후 많은 언어들이 등장했다.
3. C언어
- 어셈블리어와는 달리 하나의 소스만 작성하면 모든 기종에서 실행이 가능하다.
- But, OS들은 각각의 특성이 존재하기 때문에 C언어를 컴파일 하기 전에 각 기종별로 소스코드를 수정할 필요가 있다는 단점이 존재한다.
(ex; 어떤 OS는 int타입을 2바이트로 인지하고 다른 OS는 int를 4바이트로 인지)- 컴파일
: 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정
- 컴파일
4. Java의 등장
Java
- 객체지향 언어
: 프로그램을 다수의 객체로 만들고 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어
- 객체지향 언어의 중심에는 클래스(Class)가 존재
- Java는 클래스 없이는 개발이 불가능하다.
- C++은 main() 메서드가 클래스와는 별개로 존재 가능하지만, Java는 무조건 클래스 내부에 존재
(C++은 클래스 없이 개발 가능하므로, 객체지향지원 언어라고도 부름)
- C++은 main() 메서드가 클래스와는 별개로 존재 가능하지만, Java는 무조건 클래스 내부에 존재
- 단 하나의 소스파일로 모든 기종의 컴퓨터에서 실행이 가능하다. (그렇다고 C언어와 같은거 X)
5. Java 버전별 차이
LTS (Long-term Support) 버전 | non-LTS 버전 |
|
|
(안정적인 시스템 운용 및 호환을 위해서는 LTS 버전 사용 권장)
6. JDK vs JRE
JDK(Java Development Kit)
- Java 어플리케이션 개발을 위해 반드시 필요
- Java 컴파일러가 포함되어 있음
- 일반적으로 OpenJDK + 제조사의 부가 기능으로 구성 (Oracle JDK가 대표적)
- JRE가 포함되어 있어 별로도 분리하여 설치할 필요 X
JRE(Java Runtime Environment), JVM(Java Virtual Machine)
- Java로 컴파일 된 어플리케이션을 실행하는 역할
- 모든 Java 어플리케이션은 JVM이라고 하는 가상의 컴퓨터 공간에서 실행됨
- 어떠한 운영체제라도 JVM이 설치되어 있다면 Java 어플리케이션 실행 가능
- Java 소스코드는 [파일명].java 라는 파일 형식으로 루트 디렉토리(최상위)에 패키지로 구분되어 작성됨
- 컴파일을 통해 바이트 코드로 바꿔줌
- 컴파일된 결과물이 out 디렉토리에 [파일명].class 형태로 저장
7. main 함수
main 함수로 진입한 후 작성된 소스의 작업을 모두 수행하면 main 함수가 종료되는데, 이는 프로그램의 종료를 의미
public class Hello {
public static void main(String[] args) {
}
}
8. Hello world
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Sparta!");
}
}
- System.out.println();
→ 콘솔에 값을 출력하기 위한 함수 - 세미콜론은 하나의 명령 단위가 끝났다는 의미를 전달해주기 위해 반드시 붙여줘야함.
'내일배움캠프(Sparta) > Java Handbook' 카테고리의 다른 글
[Java Handbook] Part 2-2 (0) | 2023.09.12 |
---|---|
[Java Handbook] Part 2-1 (0) | 2023.09.12 |
[Java Handbook] Part 1-4 (0) | 2023.09.11 |
[Java Handbook] Part 1-3 (0) | 2023.09.11 |
[Java Handbook] Part 1-2 (0) | 2023.09.11 |