안녕하세요.
오늘은 앞으로 진행해볼 프로젝트로 C++를 이용해 증권사의 HTS 프로그램을 개발해볼 예정인데요~
그래서 저는 Java를 하는 개발자라서 C++과의 차이점을 위해 Java에 대해서 먼저 자세히 알아보는 시간을 갖도록 하려고 합니다!
Java(자바)가 무엇인지, 왜 사람들이 사용하는지 알아보도록 할게요!
Java(자바)란?
Java는 객체지향 프로그래밍 언어입니다.
운영체제나 하드웨어에서 독립적으로 실행이 가능해서 현재까지도 전 세계에서 많이 쓰이는 프로그래밍 언어입니다.
그렇다면 사람들이 왜 Java를 많이 쓸까요?
바로 Spring 프레임워크라는 Java 기반의 환경에서 웹 페이지의 다양한 기능을 쉽게 구현할 수 있는 아주 좋은 도구가 있기 때문입니다.
당장 인터넷에 웹 개발하면 파이썬의 Django, Node.js의 NextJs 등 웹 프레임워크들이 많은데 Java에서는 Spring 프레임워크가 가장 유명합니다.
또한 웹 뿐만 아니라 다양한 강점들이 있어 사람들이 Java를 사용하고 있습니다.
그러면 어떤 강점들이 있는지 알아볼까요?
Java의 장점은?
객체 지향 프로그래밍 언어
자바의 “핵심” 입니다.
보통 프로그래밍이라 한다면 데이터를 입력 받아 순서대로 처리하여 결과까지 도출해냅니다.
그런데 객체 지향 프로그래밍은 순서대로 처리한다라는 패러다임은 같지만, 여러 부품들을 조합할 수 있도록 하여 객체들의 유연한 처리를 할 수 있도록 도와줍니다.
그렇기 때문에 코드에 대한 유지보수가 쉽고 훨씬 직관적입니다.
쓰레드(Thread) 처리
자바에서는 쓰레드 처리를 지원합니다.
하나의 일을 여러 개의 쓰레드에게 나누어 주어 동시에 수행할 수 있도록 하는 멀티쓰레딩 기술로 더욱 더 빠르게 처리가 가능하도록 합니다.
이식성 Good
자바는 가상머신(JVM)만 설치되어 있다면, 모든 운영체제나 하드웨어에서 구동되는 프로그램을 만들 수 있습니다.
자동 메모리 관리 (Garbage Collector)
자바는 객체 생성 시 자동으로 메모리 영역을 할당하고, 사용이 완료되면 Garbage Collector를 통해 메모리를 해제하고, 자동으로 메모리 관리를 해줍니다.
즉 개발자가 직접 메모리에 접근할 수 없으며, 자바가 알아서 직접 관리하니 개발자 입장에서는 편하게 메모리 관리가 가능합니다.
동적 로딩
프로그램을 실행할 때 1GB의 자바 소스들을 모두 로딩하면 그 만큼의 시간이 걸리겠죠?
자바는 이러한 방식으로 프로그램 로딩을 하지 않고 프로그램이 필요한 시점에 로딩하여 사용할 수 있습니다.
Java의 단점은?
속도가 느리다.
자바는 실행을 위해 JVM 을 한번 거쳐 실행하기 때문에 다른 언어에 비해 실행 속도가 느립니다.
예외처리 (Excpetion)
자바의 예외처리는 개발자가 일일이 지정해주어야 합니다.
메모리 차지
자바는 C와 C++ 같은 프로그램 언어와 비교하여 더 많은 메모리를 차지합니다.
Java 실행은 내부적으로 어떻게 동작하나?
자바는 JVM을 통해 실행한다고 하였습니다.
그러면 자바를 실행했을때 컴퓨터 내부에서는 어떻게 실행되나 절차를 한번 알아보도록 하겠습니다.
- 개발자가 Test.java 파일을 작성합니다.
- Java 컴파일러가 Test.java 파일을 바이트코드 파일 Test.class로 변환한다.
- Class Loader가 Test.class를 JVM 메모리에 로드한다.
- 로딩한 Test.Class 파일을 실행 엔진을 통해 해석한다.
- 해석된 바이트코드는 메모리에 배치되어 수행이 이루어진다.
(이때, Test.java 에 작성한 코드 내용에 대해서 수행) - 실행하는 동안 JVM의 필요에 따라 메모리 GC를 수행한다.
JDK? JRE? JVM?
자바 공부를 하다 보면 JDK, JRE, JVM 단어는 비슷하지만 아주 헷갈리는 단어가 있습니다.
JVM (Java Virtual Machine)?
자바 프로그램을 실행하기 위한 “가상 머신” 입니다.
어느 운영체제에서 JVM 설치를 하면 Java 프로그램을 사용할 수 있게 도와주는 머신입니다.
또한 메모리를 효율적으로 관리 & 최적화 할 수 있도록 도와줍니다.
- JVM 덕분에 모든 운영체제에서 Java를 사용할 수 있습니다.
과거에는 프로그램 개발 시, 같은 프로그램이지만 운영체제 별로 다르게 작성을 해야했습니다. 그러던 중 JVM이 등장하여 각 운영체제 별로 고민 없이 개발을 진행하면 JVM에서 알아서 운영체제에 맞도록 바이트 코드로 변환하여 프로그램을 실행 할 수 있습니다.
JRE (Java Runtime Environment)?
JRE는 자바 클래스 라이브러리(Java class libraries), 자바 가상머신(JVM) 를 포함하고 있습니다.
자바 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 후 JVM에게 넘겨 실행시킵니다.
JRE만 있어도 자바를 실행시킬 수 있습니다.
JDK (Java Devlopment Kit)?
우리가 일반적으로 자바를 공부하기 위해 설치하는 것이 JDK 입니다.
JDK는 앞서 말씀드린 JRE, JVM을 포함하고 있고 JDK를 설치하면 자동으로 JRE, JVM 또한 설치됩니다.
자바로 개발하지 않고 실행만 하기 위한 사람들은 JRE만 설치해도 됩니다
하지만 자바로 무언가를 개발하기 위한 사람은 JDK를 설치해야 합니다.
JDK에는 JRE, JVM에는 없는 “자바 컴파일러”가 존재합니다.
이 컴파일러를 통해 우리는 자바에 대한 개발을 진행 할 수 있습니다.