동현 유
척척석사
동현 유
전체 방문자
오늘
어제
  • 분류 전체보기 (181)
    • BlockChain (48)
      • [paper] Consensus (13)
      • [paper] Execution (19)
      • [paper] Storage (5)
      • [paper] ZKP (1)
      • [paper] Oracle (1)
      • Blockchains (9)
    • Java (19)
      • Java의 정석 (13)
      • Java 파헤치기 (5)
    • Python (20)
      • Python 뜯어보기 (6)
      • 데이터 분석 기초 (5)
      • Python 기초 강의 (6)
      • Python 기초 강의 부록 (3)
    • Golang (0)
    • MySQL (3)
      • programmers (2)
      • 기본 문법 (0)
    • 웹 프로젝트 (IBAS) (36)
      • Django 레거시 (14)
      • SpringBoot api 개편 (14)
      • Infra (3)
      • 서버 장애 기록 (4)
      • 신입팀원 교육 자료 (1)
    • CS (30)
      • Operating System (22)
      • Computer Security (3)
      • Network (4)
      • DBMS (1)
    • 책 (10)
      • 도메인 주도 설계 철저 입문 (9)
      • Real MySQL 8.0 (1)
    • BOJ 문제 풀이 (3)
    • 이러쿵저러쿵 (10)
    • 회고 (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
동현 유

척척석사

[Java의 정석] 01. 자바란
Java/Java의 정석

[Java의 정석] 01. 자바란

2022. 3. 2. 16:18
모르는 것만 짧고 빠르게 정리한 노트입니다.

 

 

자바란

  현재는 오라클 사에 인수된 썬 마이크로시스템즈에 의해 개발된 객체지향 프로그래밍 언어이다. JVM 때문에 운영체제에 독립적인 이식성(portability)이 뛰어난 언어이다. 전통적인 컴파일러와 인터프리터의 성격을 모두 갖는 하이브리드 컴파일러의 특성을 갖고 있다. 소스코드는 javac(java compliler) 에 의해 bytecode 로 변환된 후 java(java interpreter) 에 의해 런타임으로 해석된다.

자바와 같은 언어가 채택하고 있는 방식, 컴파일된 바이트 코드를 런타임으로 해석한다.
전통적인 컴파일러, 전체 소스코드를 executable하게 컴파일한다. c c++ 등이 그 예시이다.
인터프리터. 런타임으로 line by line 해석한다. 파이썬에서 채택하고 있는 방식이다.

 

자바 언어의 특징
  1. 운영체제에 독립적이다.
  2. 객체지향 언어이다.
  3. 비교적 배우기 쉽다.
  4. Garbage Collection 으로 프로그래머가 메모리 관리에 신경을 덜 써도 된다.
  5. 네트워크와 분산처리를 지원한다.
  6. 멀티쓰레드를 지원한다.
  7. 동적 로딩을 지원한다. (필요한 시점에 클래스를 로딩하여 사용할 수 있다. 인터프리터의 특징이 있어서 가능한 듯)

 

JVM (JAVA Virtual Machine)

  전통적인 방식의 컴파일러를 통해 실행되는 코드들은 바로 OS만 거쳐 하드웨어로 전달되는데 비해, Java 코드는 bytecode 로 변환된 후에 JVM 을 거쳐 런타임에 해석되어 OS를 거친다. 그래서 속도가 느리다는 단점이 있지만, 바이트코드를 기계어(어셈블리어)로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술로 속도가 향상되었다.

  이렇게 불필요하게 보이는 JVM 을 한단계 더 거치는 이유는 바로 이식성(Portability) 때문이다. OS 에 맞는 JVM 만 선택하면 해당 JVM 위에서는 동일한 코드가 동일한 결과를 보장할 수 있기 때문이다. 단적인 예로 visual c++ 위에서 작성한 c++ 코드와 gcc 위에서 작성한 c++ 코드는 동일한 결과를 보장하지 않는다!

 

자바 프로그램 작성하기
  • 주석을 제외한 모든 코드는 클래스 블럭 내에서 작성되어야 한다.
  • public static void main(String[] args) 는 java.exe 에 의해 호출될 수 있도록 미리 약속된 부분이므로, 프로그램에 main 메서드를 포함한 클래스가 반드시 하나는 있어야한다.
  • 소스코드 파일에는 여러개의 클래스를 정의할 수 있지만, public class 는 한 개만 존재할 수 있다. 그 때 public class 의 이름과 코드 파일의 이름은 동일해야한다.

'Java > Java의 정석' 카테고리의 다른 글

[Java의 정석] 06. 객체지향 프로그래밍  (0) 2022.03.08
[Java의 정석] 05. 배열  (0) 2022.03.05
[Java의 정석] 04. 조건문  (0) 2022.03.05
[Java의 정석] 03. 연산자  (0) 2022.03.05
[Java의 정석] 02. 변수  (0) 2022.03.02
    동현 유
    동현 유
    Fault Tolerant System Researcher for more Trustful World and Better Lives. (LinkedIn: https://www.linkedin.com/in/donghyeon-ryu-526b8a276/)

    티스토리툴바