IT/JAVA

Java 란

iamhyeon 2024. 12. 27. 20:12

- 객체 지향 프로그래밍 언어로, "한 번 작성하면, 어디서나 실행된다 (Write Once, Run Anywhere)"라는 특징을 가지고 있다.
- 자바로 작성된 프로그램이 JVM을 통해 운영체제와 관계없이 동일한 자바 어플리케이션을 실행할 수 있어 다양한 환경에서 일관된 동작을 보장한다.
- 객체 지향 언어로, 코드의 재사용성, 유지보수성, 확장성을 높이기 위해 클래스와 객체, 상속, 다형성, 캡슐화와 같은 원칙을 따른다. 이러한 객체 지향 특성 덕분에 복잡한 시스템을 모듈화하고 관리하기 용이하다.
- 강력한 메모리 관리와 가비지 컬렉션이다. 자동으로 메모리를 관리하며, 더 이상 사용되지 않는 객체를 가비지 컬렉터가 자동으로 제거해 주어 메모리 누수를 방지한다.
- 멀티스레딩을 기본적으로 지원하여, 병렬 처리와 효율적인 자원 관리가 가능해 멀티태스킹을 처리하는데 유리하다.
- 강력한 표준 라이브러리와 프레임워크를 제공한다. ( 스프링 프레임워크는 자바 기반으로 설계되었고, 의존성 주입, 트랜잭션 관리, RESTful API 개발을 위한 도구를 제공한다. ) ( 이외에도 JDBC와 같은 데이터베이스 연동 기능도 강력하게 지원한다. )
- 보안 기능도 강력하여, 데이터 암호화, 인증 및 권한 부여 기능등을 쉽게 구현할 수 있다. 


자바는 JVM을 통해 OS에 종속되지 않으며, 컴파일된 바이트코드로 여러 운영체제에서 실행할 수 있도록 만들어졌다.
개발자는 JDK를 사용하여 자바 프로그램을 작성하고, JRE에서 실행되며, 이 모든 과정은 컴퓨터가 이해할 수 있도록 바이트코드로 변환된다.
 
자바는 OS에 독립적인 특징을 가지고 있으며, 이를 가능하게 하는 것은 JVM(Java Virtual Machine) 덕분이다.
자바 프로그램은 다음과 같은 과정을 통해 실행된다.


1. 자바 컴파일 과정


- 소스코드 작성: 개발자가 .java 자바 소스코드를 작성한다.
- 컴파일: 자바 컴파일러(javac)가 이 소스코드를 자바 바이트코드 (.class 파일)로 변환한다. (이것을 컴파일한다고 한다) (컴퓨터가 읽을 수 없는 자바 가상 머신 (JVM) 이 이해할 수 있는 코드)
- JVM이 자바 바이트 코드를 바이너리 코드로 변환하고 실행한다.


2. 컴파일 vs 인터프리트

  • 컴파일(Compile):
    • 프로그래밍 언어로 소스코드를 작성하고, 컴퓨터에서 실행할 수 있는 바이너리로 변환하는 작업
    • 코드를 미리 번역하여 실행할 때 빠르게 처리할 수 있다. 
    • C, Java, ...
  • 인터프리트(Interpret):
    • 코드를 실시간으로 번역하여 실행하는 방식이다.
    • 코드를 그대로 갖고 있다가 프로그램을 실행할 때 그때 그때 통역 해준다.
    • Python, JavaScript, ...

3. 자바의 독립성

자바 코드를 JVM이 자바 바이트 코드 (공통 번역본) 로 컴파일해서 다양한 OS에서 그 OS의 기계어로 변환한다.
JVM이 설치돼있으면 어떤 운영체제에서도 실행이 가능하다.
이로 인해 개발자는 운영체제에 신경 쓰지 않아도 자바 프로그램을 실행할 수 있다.

 
<=
컴퓨터는 언어마다 쓰는 기계 언어가 다르다.
C로 짠 코드를 윈도우 용으로 컴파일 한 것을 맥이나 리눅스에서 돌리지 못하게 돼있다.
코드를 실행할 OS 종류에 따라 따로 따로 컴파일을 해야 해서 번거롭다.


4. 자바 실행 환경

  • JRE (Java Runtime Environment):
    • 자바 프로그램이 실행되는 환경으로, JVM과 필수 라이브러리 등이 포함된다. ( JVM이 일하는 곳 )
    • 필수[표준] 라이브러리 :  다양한 기초, 필수 기능들을 직접 구현하지 않아도 되도록 미리 작성된 수많은 코드들이 기본으로 제공되는 것  /  각종 설정파일, 자바 바이트코드의 실행에 필요한 요소들, 등  /  lang, util, io, net, sql, ...
  • JDK (Java Development Kit):
    • 자바 프로그램 개발을 위한 도구 모음으로, JRE, JVM, 자바 컴파일러, 디버거, JAR 도구 등이 포함된다.

 
 
 
 


refer to
https://docs.oracle.com/javase/8/docs/index.html
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Language/%5Bjava%5D%20%EC%9E%90%EB%B0%94%20%EA%B0%80%EC%83%81%20%EB%A8%B8%EC%8B%A0(Java%20Virtual%20Machine).md
 
 

 

반응형

'IT > JAVA' 카테고리의 다른 글

IntStream  (0) 2025.01.04
Stream  (0) 2025.01.03
MyBatis Log4j Error  (0) 2024.10.10
JDBC  (1) 2024.10.08
JDK 설치  (0) 2024.10.06