JAVA공부 [0. JAVA???]
1. 🔥 JAVA?
자바는 현재도 많은 사람들이 사용하는 언어로 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 프로그래밍 언어에 추가로 유용한 기능을 제공하는 라이브러리
자바의 특징
- 가상머신으로 자바는 한번 작성된 코드는 어디에서든 작동한다. (WORA)
- “write once run anywhere” -> WORA를 가능하게 해주는 기능이 가상머신(JVM)이다..!
- GUI가 도입되어 있다.
- Networking이 발달되어 있다.
- 보완성이 확보되어 있다.
- 멀티 쓰레드가 가능하다.
C#의 CLR중간 언어처럼 플랫폼의 호환성을 위해 가상머신이 존재한다.
- 이는 장점이다 단점으로 작용하는데 다른 언어보다 한 단계(바이트코드 변환)를 더 커지게 되서 다른 언어보다 느리다는 특징과 플랫폼마다의 호환성때문에 공통적인 부분만 건드릴 수 있으므로 내부적인 부분은 건드리지 못한다는 단점이 존재한다.
1.2. 자바 실행과정
- 컴파일러가 바로 바이트코드한 후 링킹과정이 없음
- 바이트 코드는 JVM(자바 가상 머신)에서만 실행 가능
- 자바는 필요한 클래스들을 필요에 따라 동적으로 로딩
자바를 개발하기 위해서는 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. 자바의 개발 및 실행 환경!
- 여러 소스코드(.java)로 나누어서 개발
- 바이트 코드(.class)를 하나의 실행 파일로 만드는 링크 과정 없음
- main()메서드를 가진 클래스부터 실행 시작
- 자바 가상 머신은 필요할 때 필요한 API나 목적파일들을 로딩하게 된다.
1.4. 자바의 응용
자바는 애플렛으로 실행파일을 만들어서 사용할 수 있지만 위에서 말한 단점, 실행환경 조성(JRE), 가상머신 속도 문제로 잘 사용하지 않는다.
- 그에 반해 자주 사용되는 곳은 안드로이드, 서버 이 두가지 경우에는 자바의 활용도가 매우 높다.
정리
- 자바 컴파일러가 소스 코드를 컴파일 하면 Byte code가 생성된다.
- 바이트 코드를 해석하여 실행하는 소프트웨어는 JVM이다.
- 자바는 JVM아 구현되어 있는 컴퓨터에서는 실행가능하다.
댓글남기기