1. 🔥 JAVA?

image

자바는 현재도 많은 사람들이 사용하는 언어로 C#,C++과 비슷한 언어로 객체지향의 대표격인 언어이다.

몇년전 공부한 적이 있는데 이번강의를 계기로 학습 및 복습할 수 있는 기회라고 생각한다.

또한 C++,C#,C언어 등 다양한 언어를 학습했기 때문에 넓은 스펙트럼으로 쉽게 다가갈 수 있다.

c언어와 같이 일반적인 목적의 언어이며 객체지향의 본질적인 목적을 가지고 있으며 비교적 최신의 언어이다.

자바의 탄생한 목적은 80~90의 시기에 인터넷이 발달하면서 네트워크를 목적으로 두고 개발되었다.

1.1. 플랫폼의 종속성

일반적으로 우리가 어떠한 프로그램을 받을 때 해당 프로그램을 현재 운영체제에 맞게 설치하게 된다.

  • 이때 자바는 이러한 종속성을 뛰어넘게 되는데 하나의 실행파일로 다양한 운영체제에서 똑같이 실행할 수 있다.

C/C++

사용자가 c언어로 코드를 작성할 때는 그냥 그자체로 c이기 때문에 전혀 플랫폼 종속성에 걸리지 않는다.

  • 그러나 컴파일을 통해 실행파일을 만들게 되면 플랫폼 종속성에 걸리게 된다.

이유는 cpu마다 명령어의 집합이 다르며, 은영체제에 따라 또 달라지기 때문에 해당 cpu,운영체제에서 만들어진 실행파일은 다른 운영체제, cpu에서 작동되지 않는다..!

JAVA(WORA)

사용자가 JAVA로 코딩하여 컴파일하면 바이트코드라는 것이 생긴다..! byte code -> 번역이 유용한 코드

  • 이러한 바이트 코드를 해당 프로그램에 맞게 번역하여 실행파일을 만들면 해당 운영체제, cpu상에서 작동이 가능하게 된다.

이러한 번역기의 역할을 하는 것을 가상머신(JVM)이라고 한다!

  • 모든 컴퓨터에서 작동되는 것이 아닌 가상머신이 구현되어 있는 것에 한에서 플랫폼 종속성이 없어진다.

Java Virtual Machine(JVM)

  • 다양한 컴퓨터에서 동일한 모습으로 실행가능하다..!!

이러한 번역 역할을 하는 크게 보자면 하나의 컴퓨터가 위에서 한번 더 돌아가기 때문에 느리다는 단점이 존재한다.

과정 -> hello.java라는 소스코드 -> 컴파일러 -> hello.class(Bytecode) -> 자바의 가상머신 -> 기계어로 바꾸어 실행

  • 정리하자면 사용자가 자바 프로그램을 실행할려면 소스코드와 자바가상머신, 기본 API가 필요하다.

API 프로그래밍 언어에 추가로 유용한 기능을 제공하는 라이브러리

자바의 특징

  1. 가상머신으로 자바는 한번 작성된 코드는 어디에서든 작동한다. (WORA)
    • “write once run anywhere” -> WORA를 가능하게 해주는 기능이 가상머신(JVM)이다..!
  2. GUI가 도입되어 있다.
  3. Networking이 발달되어 있다.
  4. 보완성이 확보되어 있다.
  5. 멀티 쓰레드가 가능하다.

C#의 CLR중간 언어처럼 플랫폼의 호환성을 위해 가상머신이 존재한다.

  • 이는 장점이다 단점으로 작용하는데 다른 언어보다 한 단계(바이트코드 변환)를 더 커지게 되서 다른 언어보다 느리다는 특징과 플랫폼마다의 호환성때문에 공통적인 부분만 건드릴 수 있으므로 내부적인 부분은 건드리지 못한다는 단점이 존재한다.

1.2. 자바 실행과정

  1. 컴파일러가 바로 바이트코드한 후 링킹과정이 없음
  2. 바이트 코드는 JVM(자바 가상 머신)에서만 실행 가능
  3. 자바는 필요한 클래스들을 필요에 따라 동적으로 로딩

자바를 개발하기 위해서는 JDK(Java development kit)을 다운받아야 하는데 이는 오라클사에서 학생들을 상대로 무료배포하고 있다.

  • 실행하기 위해선 JRE필요..!

Java Runtime Environment
개발하기 위한 것이 아니라 자바의 프로그램을 실행 시키기 위해 필요..!

  • 내부에는 가상머신 + 기본 API들이 들어있다. 여기서 디버거, 컴파일러를 추가한 것이 JDK

cmd에서 보이는 javac는 컴파일 명령어이고 (jdk에 설치되어 있음 확인할려면 java만 치면 확인가능) java Hello는 실행 명령어이다.

  • 정리하면 자바를 개발하는 개발도구는 JDK라고 부르고 실행만 하는데 필요한 도구는 JRE라고 한다.
    • se(표준베포), me(마이크로 배포), ee(기업용 배포)
  • 컴파일을 하기 위해선 javac가 필요하고 컴파일하면 .class파일이 생성된다.
    기본적인 라이브러리는 설치할때 API프로그램으로 추가된다.

  • visual studio와 같이 쉽게 개발하기 위해 IDE가 필요한데 자바는 ECLIPSE를 사용한다.

  • 최근에는 JIT라는 기술을 사용하여 위의 단점들이 해결되었다.

1.3. 자바의 개발 및 실행 환경!

  1. 여러 소스코드(.java)로 나누어서 개발
  2. 바이트 코드(.class)를 하나의 실행 파일로 만드는 링크 과정 없음
  3. main()메서드를 가진 클래스부터 실행 시작
  • 자바 가상 머신은 필요할 때 필요한 API나 목적파일들을 로딩하게 된다.

1.4. 자바의 응용

자바는 애플렛으로 실행파일을 만들어서 사용할 수 있지만 위에서 말한 단점, 실행환경 조성(JRE), 가상머신 속도 문제로 잘 사용하지 않는다.

  • 그에 반해 자주 사용되는 곳은 안드로이드, 서버 이 두가지 경우에는 자바의 활용도가 매우 높다.

정리

  1. 자바 컴파일러가 소스 코드를 컴파일 하면 Byte code가 생성된다.
  2. 바이트 코드를 해석하여 실행하는 소프트웨어는 JVM이다.
  3. 자바는 JVM아 구현되어 있는 컴퓨터에서는 실행가능하다.

태그: ,

카테고리:

업데이트:

댓글남기기