C언어와 Java언어는 구조적으로 다릅니다. 예전에는 C언어를 아주 많이 사용했습니다. 특히 사용자 중심의 고급언어이고 기계어로 바로 이식이 가능해서 여러가지 높은 호환성을 가지고 있는 것이 특징입니다. 이런 장점들을 뒤로하고 문제점도 많이 있었습니다.
C언어는 포인터의 사용으로 메모리 할당 및 해제에 대해서 프로그램의 내용을 이해하기 어렵습니다. 게다가 자칫 잘못하면 함수로 나뉘어야 할 프로그램들이 모두 main 내에 쓰여져 이해하기 어려운 프로그램이 될수도 있습니다. 또한 데이터타입 검사가 미약한 점도 있습니다.
그럼 C언어와 다른 Java 언어가 더욱 인기가 높아진 점은 어떤것인지 알아보도록 하겠습니다.
Java 는 어디서나 동일한 소스로 실행이 가능하다!
Java 언어를 사용하기 위해서는 보통 JVM 이라는 것을 설치합니다. JVM 은 Java Virtual Machine 의 약자로 자바를 실행시켜주는 가장 머신을 의미하죠. 예를들어서 C 언어의 경우는 Linux 프로그래밍 따로, Windows 프로그래밍 따로, Unix 프로그래밍 따로 프로그래밍을 해주어야 합니다. 보통 매크로(#define)를 지정해서 실행파일로 만듭니다.
Java의 경우는 하나의 프로그래밍을 만들면 JVM이 설치된 곳 어디서든 모두 동일한 소스로 동일한 실행이 가능합니다. 이것이 자바의 가장큰 장점이라 생각됩니다. 내가 운영체제(Windows, Linux, Unix) 어디서든 프로그래밍을 하면 어디서든 동일한 결과를 실행하기 때문에 이식성이 매우 좋습니다. 그렇다면 JVM 은 어떤 역할을 하는 걸까요?
JVM 은 Java 언어로 만들어진 소스파일을 컴파일러(compiler)를 거치면 .class 파일이 생성됩니다. 이 소스코드를 bytecode 라고 합니다. 이러한 bytecode 를 JVM을 통해서 기계어로 번역시켜주고 마지막에는 CPU 가 처리할 수 있는 코드가 됩니다. 즉, class 파일인 bytecode가 있다면 어떠한 운영체제든지 JVM 만 있다면 실행이 가능한 것이죠. 따라서 운영체제에 종속되지 않는 독립적인 언어가 바로 Java 입니다.
그래서 Java 언어는 WORA 라고 합니다. Write Once Run Anywhere 로 한 번 쓰고 어디서든 실행할수 있는것이 Java 언어의 가장 큰 특징입니다.
Java 를 사용하기 위해서 설치해야할 것들
Java 언어를 사용하고 실행하기 위해서는 아래 3가지를 보통 설치하고 사용합니다.
- JVM (Java Virtual Machine)
- JRE (Java Runtime Environment)
- JDK (Java Development Kit)
JVM 은 위에서 설명드렸듯이 Java Virtual Machine 입니다. 실제 물리적인 기계가 아닌 소프트웨어적으로 만든 가상 기계이며 컴퓨터 내에서 환경을 설정하면 자동적으로 설치되고 실행되는 프로그램입니다.
JRE 는 Java Runtime Environment 입니다. 이는 Java 를 실행하기 위한 환경을 의미합니다. 포함관계는 JRE 는 JVM + 라이브러리 입니다. Java 소스파일을 만든 뒤 .class 파일로 컴파일러가 만들어 주면 JVM이 이를 실행해 준다고 했습니다. 하지만 JVM 이 실행하기 위해서는 내부에서 사용하는 여러가지 라이브러리가 필요합니다. 이러한 라이브러리들은 JRE 가 설치될때 JVM 과 함께 설치됩니다.
JDK 는 Java Development Kit 입니다. 프로그래밍을 하기 위해서는 반드시 필요한것이 이 JDK 입니다. JDK 내부에는 앞에서 말씀드린 컴파일러(Compiler)를 포함하여 오류를 수정할수 있는 디버거(Debuggers), Java 문서인 JavaDoc 등이 포함되어 있고 거기에 JRE 가 포함되어 있습니다. 즉, JDK 를 설치하면 프로그래밍에 필요한 모든것이 설치된다고 생각하셔도 됩니다.
이때, 한가지 알아두고 넘어가야 할 것이 있습니다. 바로 라이센스입니다. Java 언어는 오픈소스입니다. 누구나 무료로 사용이 가능한 라이센스를 가지고 있습니다. 하지만 JDK는 다릅니다. JDK 는 무료가 아니기 때문에 함부로 사용하거나 상용서비스에 이용했다가는 라이센스 위반에 해당합니다. 공부하는 입장에서는 상관이 없지만 혹시 유료 프로그램으로 제작시에는 문제가 있을 수 있습니다.
그래서 Java 라이센스 문제로 인해서 법정문제가 있었죠. 현재 Java 언어는 Oracle 사의 것으로 넘어갔습니다. 그래서 JDK 를 사용할때 오라클사의 JDK 를 다운로드 해서 사용할 수 있지만 상용시 라이센스 문제가 발생합니다. 그래서 공부하는 입장이라도 OpenJDK 라는 것이 있고 이를 다운로드 해서 사용하는 것도 추천드립니다.
OpenJDK 역시 오라클 커뮤니티에서 제공하는 소스를 기반으로 만들어진 것이므로 대부분의 라이브러리들을 사용할 수 있습니다.
Java 의 강점은 Class 다!
C언어에도 비슷한 내용은 구조체입니다. 구조체 내에는 함께 사용하는 변수들이 묶여있습니다. 반면에 클래스는 변수와 함께 메소드까지 묶어서 사용할 수 있습니다. 메소드는 C언어의 함수를 말합니다. 그렇다면 클래스가 왜 강점인가?
클래스는 누구나 만들수 있습니다. 그리고 누구나 공유할 수 있죠. 그래서 사용하고 싶은 클래스가 있으면 가져와서 사용하면됩니다. 무언가 설치하고 환경설정하고 할 필요가 없습니다. 클래스가 있고 가져올 수 있으면 사용할 수 있습니다. 내가 계산기를 만들고 싶은데 누군가 만들어놨을 경우 가져와서 계산기만 불러서 사용하면 됩니다. 이것이 Java 언어를 사용하고 넓게 퍼진 가장 큰 이유입니다.
다양한 라이브러리가 무수히 많이 존재하고 이러한 라이브러리를 가져와서 사용할 수 있는언어가 Java입니다. 오픈소스의 가장 큰 특징중 하나라고도 할 수 있습니다.
이번 포스팅에서는 Java 언어에 대해서 잠시 알아보았습니다. Java 언어는 C 언어와 달리 굉장히 구조적이고 클래스 라는 개념을 이용해서 매우 다양한 라이브러리들을 무료로 이용이 가능합니다. 직접 만들어서 사용해도 되지만 기존에 있는 라이브러리들을 그대로 가져와서 쉽게 구현할 수도 있습니다.
Java 는 이러한 라이브러리들이 굉장히 많고 점점 커져서 스프링 프레임워크로 기업에서도 사용하는 큰 생태계가 완성되었습니다. 지금도 우리나라 기업에서 스프링 프레임워크를 많이 사용합니다. 전자정부프레임워크도 있죠. Java 는 배워두면 유용한 점이 굉장히 많은 언어입니다.
'쿤즈 Dev > Java' 카테고리의 다른 글
[Java] LocalDateTime 값을 String 포멧으로 변환하는 방법 (0) | 2022.03.16 |
---|---|
[Java] Primitive(원시) 자료형과 Wrapper 클래스 (0) | 2021.10.08 |
[Java] 데이터 타입 사용해서 화면에 출력하기 (0) | 2021.09.14 |
[Java] 자바에서 변수 사용하는 방법 (feat. 키워드, 데이터타입) (0) | 2021.09.13 |
[Java] stream() 메소드를 이용해서 Collection 객체 가공하는 방법 (0) | 2021.08.18 |
댓글