[JAVA의 정석] Chapter1. 자바를 시작하기 전Language/Java2024. 5. 2. 00:21
Table of Contents
728x90
JAVA
자바란?
- 운영체제에 독립적이다.
- 운영체제의 종류와 관계없이 실행 가능하다.
따라서, OS에 따른 프로그램 변경이 불필요하다. - ⇒ 여러 기종의 컴퓨터와 OS가 공존하는 인터넷 환경에 적합하다.
- 운영체제의 종류와 관계없이 실행 가능하다.
- 풍부한 클래스 라이브러리(Java API) 존재 → 프로그래밍 필요 요소 제공
자바의 역사
- C++의 장점을 도입, 단점을 보완한 Oak 라는 언어에서 출발
⇒ 해당 Oak를 인터넷에 적합하도록 개발 방향을 변경 → JAVA
자바 언어의 특징
OS에 독립적이다.
- 자바가상머신(JVM)을 통해 운영체제에 맞게 변환하여 전달한다.
- 자바 프로그램 → OS 독립적, JVM → 운영체제 종속적이다.
⇒ JAVA 프로그램은 OS와 HW 관계없이 실행 가능하다.
객체 지향 언어
객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되었다.
비교적 배우기 쉽다
- 간결하고 명료한 객체지향적 설계를 보인다.
자동 메모리 관리를 지원한다.
가비지컬렉터(Garbage collector)
가 자동으로 메모리 관리를 하게 된다.
⇒ 프로그래머가 보다 프로그래밍에 집중할 수 있도록 돕는다
네트워크와 분산처리를 지원한다.
- 인터넷과 대규모 분산환경 염두하고 만들었기에, 풍부하고 다양한 네트워크 프로그래밍 라이브러리 제공한다.
- 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발이 가능하다.
멀티쓰레드를 지원한다.
- 기존의 멀티쓰레드 → 사용되는 OS에 따라 구현 방법의 차이가 존재한다.
- JAVA → 시스템과 관계 없이 구현이 가능하다.
- 관련 라이브러리 제공 → 구현이 쉬움
- 여러 thread에대한 스케쥴링 → 자바 인터프리터가 담당한다.
동적 로딩을 지원한다.
- 자바 어플리케이션 → 여러 클래스로 구성
- JAVA → 동적 로딩 지원
- ⇒ 실행 시 모든 클래스 로딩 X, 필요한 것만 로딩 가능
- 일부 클래스가 변경 → 전체 애플리케이션 다시 컴파일 X
- 변경사항 존재 → 적은 작업으로 처리 가능한 유연한 어플리케이션을 제작이 가능하다.
JVM
Java Virtual Machine을 줄인 것으로 자바를 실행하기 위한 가상 기계를 말한다.
- 가상 기계
소프트웨어로 구현된 하드웨어이다. 따라서, 실제 컴퓨터가 아닌 소프트웨어로 구현된 컴퓨터를 말한다.
- 자바 작성 애플리케이션 → JVM 안에서만 실행이 된다.
- 즉, 자바를 실행한다는 것은 JVM을 필요로 하는 것이다.
- 일반 애플리케이션
OS만 거치고 하드웨어로 전달되는 구조를 볼 수 있다.
- 애플리케이션 ↔ OS 가 맞붙어 있다.
⇒ 따라서, 애플리케이션을 OS에 맞게 변경해야 한다.
- Java 애플리케이션
- 애플리케이션 ↔ JVM으로 OS와 HW에 독립적으로 다른 OS에서도 프로그램의 변경 없이 실행이 가능하다.
- 속도 면 → 해석 과정으로 느릴 수 있다
- ⇒최근에는 컴파일된 자바코드(바이트코드)를 HW의 기계어로 변환하는 JIT 컴파일러와 향상된 최적화 기술이 적용되어 속도 격차를 줄였다.
- JVM을 한번 더 거쳐 HW에 맞도록 실행 시 해석해주는 작업이 필요하다.
위와 같이 서로 다른 OS용의 JVM을 제공하고, 자바 중요 장점인 “Write once, run anywhere”(한번 작성하면 어디서든 실행이 된다) 라는 원칙이 제공이 이루어진다.
자바 개발환경 구축
용어 정리
- JDK
자바 개발 도구(Java Development Kit)
- JRE
자바 실행 환경(Java Runtime Environment), 자바 작성 프로그램이 실행되기 위한 최소환경
- JDK
- JRE + 개발에 필요한 실행 파일(Javac.exe 등)
- JRE
- JVM + 클래스라이브러리(Java API)
Java API 문서
자바에서 제공하고 있는클래스 라이브러리인 Java API를 잘 사용하기 위해서는 위의 문서에 대한 이해가 필수적으로 이루어져야 한다.
자바로 프로그램 작성하기
class Hello{
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
결과 출력 내용
- 동작 과정
자바 컴파일러(javac.exe)를 사용해 소스파일(Hello.java)로 부터 클래스파일(Hello.class)을 생성한 후 자바 인터프리터(Java.exe)로 실행한다
**Hello.java → javac.exe(컴파일) → hello.class 생성 → java.exe(실행) → “Hello world” 출력**
- 자바 코드의 구조
- main 메서드
- public static void main(String[] args)
- String[] args는 String 타입의 args를 선언한것과 같다.
- ⇒ 이는 추후 배열에서 자세히 다루고자 한다.
- main 메서드의 경우 위와 같이 실행한다
- 모든 클래스가 main 메서드를 가지는 것은 X
- ⇒ but 하나의 자바 애플리케이션에는 main 메서드를 포함한 클래스가 반드시 하나는 존재해야 한다.
- public static void main(String[] args)
- main 메서드
class 클래스이름{ /* 주석을 제외한 모든 코드의 클래스는 블럭{} 내에서 작성해야 한다. */ }
728x90
'Language > Java' 카테고리의 다른 글
[JAVA의 정석] Chapter6. 객체지향 프로그래밍1 (1) | 2024.05.02 |
---|---|
[JAVA의 정석] Chapter2-5. JAVA 문법 (0) | 2024.05.02 |
@잉퓨_ :: 대학로에서 개발하기
보안 전공 개발자지만 대학로에서 살고 싶어요
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!