Java

0. 특징, JVM,

Jungsoomin :) 2021. 8. 10. 22:09

0. 자바

  • 마이크로 시스템즈에서 개발한 객체지향 프로그래밍 언어
  • 다양한 기종의 컴퓨터와 운영체제가 있는 인터넷 환경에서 적합한 프로그래밍 언어이다.


1. 특징

1.1 운영체제 독립적

자바는 JVM (자바 가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다.

Java 언어는 JVM 하고만 통신하며, JVM 이 Java 응용프로그램이 내린 명령을 받아 운영체제 맞는 언어로 변환해서 전달하는 구조이다.

하지만 JVM 은 운영체제 종속적이기 때문에, 운영체제 맞는 JVM 을 설치해야 한다.

1.2 객체지향 언어이다.

객체 지향 언어의 특징인 "상속" "캡슐화" "다형성" 을 잘 보존하고 있는 언어이다.

1.3 배우기 쉽다.

간단한 구문과 연산자를 지니면서 객체지향 언어의 특징인 "재 사용성" "유지보수의 용이성" 을 지키고 있다.

1.4 자동 메모리 관리(GC)

Garbage Collection 이 자동으로 필요없는 객체나 필드들을 정리해주기 때문에, 프로그래머가 메모리를 관리할 필요가 없다.

자동 메모리 관리가 비효율적인 면이 있으나, 프로그래머가 프로그래밍에 집중하게 해준다.

1.5 네트워크와 분산처리 API가 지원되어 네크워크 관련 프로그램을 쉽게 개발할 수 있게 해준다.


1.6 멀티 쓰레드에 대한 구현방법이 시스템과 상관없이 일정하며, 관련 라이브러리가 지원된다.

멀티 스레드에 대한 스케쥴링을 자바 인터프리터가 담당한다.

1.7 동적로딩 지원

자바의 동적 로딩 지원 기능으로 인하여 어플리케이션 구동 시에 모든 클래스를 로딩하는 것이 아니라, 필요한 시점에 클래스를 로딩하여 사용하며, 일부 클래스가 변경되어도 전체 어플리케이션을 컴파일하지 않는다.


2. JVM

Java Virtual Machine 의 약자로, "자바를 구동하기위한 가상의 컴퓨터" 라고 한다.

가상 머신이란, 소프트웨어화 된 컴퓨터를 말하며, Java 는 JVM [ 자바를 구동하기위한 가상의 컴퓨터 ] 에서만 실행되기 때문에, 반드시 JVM이 필요하다.

Java 응용프로그램은 JVM을 거쳐 운영체제에 명령을 내리며, 또한 하드웨어에 맞게 완전히 컴파일된 것이 아니라 실행 시에 해석하기 때문에 속도가 느리다는 단점을 가진다.

(기술 발전으로 인하여 속도격차가 많이 줄었다)


3. JDK

  • Java Development Kit 의 약자로 JRE(JVM + Java API) + Javac 등의 추가 개발 용 프로그램이 추가된 프로세스이다.

Java SE Development Kit 8 Downloads

스크린샷 2021-08-10 오후 8 35 43



4. 환경변수 등록 후 확인

  • 터미널 → /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home/bin 경로에 자바 프로그램 개발을 위한 실행파일이 들어있다.
  • .bash_profile 을 vim 에디터로 열어 환경변수를 등록한다.
vi ~/.bash_profile

## 환경변수 등록
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home

export PATH=${PATH}:$JAVA_HOME/bin

## 쉘에 파일내용 전달 후 실행
source ~/.bash_profile

## 환경변수 출력
printenv
#JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
#PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/bin



5. 주요 파일

  1. javac.exe : 자바 컴파일러, 자바 코드를 바이트코드(JVM 이해할수 있는 기계어)로 컴파일한다.
  2. java.exe : 자바 인터프리터, 바이트코드를 해석하고 실행하는 역할
  3. javap.exe : 자바 역 어셈블러, 바이트코드를 다시 자바코드로 만든다.
  • vim 편집기로 작성 → javac.exe 실행 → 자바 컴파일러가 바이트코드화 → .class 파일 생성 → java.exe 실행 → 자바인터프리터가 .class 파일을 실행
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}
javac Hello.java

#Hello.class
java Hello
Hello World!



6. 규칙

  1. 자바의 모든 코드는 반드시 class 파일 안에 존재해야만 한다.
  2. 메인 함수는 자바의 시작과 끝을 의미하며, 호출스택에서 메인 함수가 없어지면 프로그램은 종료된다.
  3. 메인 함수는 시작점으로 자바 어플리케이션에는 반드시 1개 이상의 메인함수가 존재해야만한다.
  • 하나의 소스내에 클래스가 2개 이상이라면, 하나의 클래스만 public 으로 선언할 수 있으며, public 클래스의 이름이 소스파일의 이름이 된다.
    • public class One + class Two ⇒ one.java
    • class One + class Two ⇒ One.java or Two.java [ 소스내 public class 가 없을 경우, 원하는 클래스를 파일 이름으로 정할 수 있음

'Java' 카테고리의 다른 글

5. printf()  (0) 2021.08.13
4. 상수와 리터럴  (0) 2021.08.13
3. 변수의 타입  (0) 2021.08.12
2. 변수  (0) 2021.08.12
1. 주석  (0) 2021.08.10