처음부터 차근차근

[Java] Java란? 본문

Language/Java

[Java] Java란?

HangJu_95 2023. 12. 14. 14:20
728x90

Java란?

자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.

 

1991년 Green Project라는 이름으로 시작해 1995년에 발표되었습니다.

처음에는 가전제품 내에 탑재해 동작하는 프로그램을 개발하기 위해 C++을 확장해서 사용하려 했지만, 그들의 목적을 이루기에는 부족했습니다. 그래서 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발했습니다.

이 프로젝트 초기에는 가전제품이나 PDA와 같은 소형기기에 사용될 목적이였으나, 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자 운영체제에 독립적인 자바가 적합해졌으며, 현재는 웹 애플리케이션 분야에 가장 많이 사용되는 언어 중 하나입니다.

Java의 특징

1. 운영체제에 독립적이다.

자바 응용프로그램은 운영체제나 하드웨어가 아닌 자바가상머신(JVM)하고만 통신하고, JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달합니다.

JVM은 운영체제에 종속적이며, 여러 운영체제에서 설치할 수 있도록 서로 다른 버전의 JVM을 썬에서 제공하고 있습니다.

따라서 자바로 작성된 프로그램은 운영체제와 하드웨어 관계없이 실행 가능합니다.

 

2. 객체지향 언어이다.

자바는 순수한 객체지향 언어로써, 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어 있습니다.

 

3. 컴파일 언어인 동시에 인터프리터 언어를 합친 하이브리드 언어이다.

자바는 먼저 텍스트 소스를 컴파일하여 이진 파일(클래스 파일)로 만든 다음, 자바 런타임이 이 클래스 파일을 인터프리트하면서 실행합니다. 자바는 먼저 시스템과 무관한 이진 파일을 만듦으로써 컴파일 언어에 가까운 속도와 함께 시스템의 독립성을 얻을 수 있습니다.

간단한 예제를 한번 보겠습니다.

인텔리제이를 통해 자바 코드 작성 후 실행시킨 결과

자바 코드를 src에 작성한 다음, 인텔리제이에서 실행시키면 다음과 같은 과정을 거치게 됩니다.

먼저 자바 코드를 작성하고 실행하면 out이라는 폴더가 생깁니다.

이 폴더에는 컴파일을 통해 만든 이진 파일(클래스 파일)이 존재합니다.

생성된 이진파일들

이후 인텔리제이를 통하여 Java를 실행시키며, JVM에서 해당 클래스 파일이 동작하게 됩니다.

 

4. 자동 메모리 관리(Garbage Collection)

Java는 가비지 컬렉터에 의해 자동으로 메모리 관리를 해주기 때문에 개발자가 메모리를 따로 관리하지 않아도 됩니다.

자바는 모든 메모리 접근을 자바 시스템이 관리하고 제한하며, 또한 예외 처리까지 하므로 시스템이 붕괴될 우려가 없습니다.

따라서 포인터 연산도 지원하지 않습니다.

 

5. 네트워크와 분산처리를 지원한다.

다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원합니다.

 

6. 멀티쓰레드를 지원한다.

멀티 스레드를 지원하면 프로그램 단위가 같은 스레드를 동시에 수행할 수 있습니다.

자바에서 개발되는 멀티 쓰레드 프로그램은 시스템과 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다는 장점이 있습니다.

 

7. 동적 로딩을 지원한다.

자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있습니다.

또한 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 application을 작성할 수 있습니다.

 

8. C++보단 배우기 쉬우며, 정적 언어이다.

자바는 C++에 가깝지만, 훨씬 간단합니다.

또한 정적 언어이기 때문에 파이썬이나 자바스크립트와 같은 인터프리터 언어와는 다르게 컴파일 과정에서 오류를 검출하기 때문에 오류 발생률이 낮은 편입니다.

(사실 TypeScript 쓰면 Javascript도 낮다는 것은 비밀..)

자바 표준 스펙

자바는 표준 스펙구현으로 나눌 수 있습니다.

 

자바 표준 스펙

  • 자바는 이렇게 만들어야 한다는 설계도이며, 문서이다.
  • 이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다.
  • 자바 표준 스펙은 자바 커뮤니티 프로세스(JCP)를 통해 관리된다.

다양한 자바 구현

  • 여러 회사에서 자바 표준 스펙에 맞추어 실제 작동하는 자바 프로그램을 개발한다.
  • 각각 장단점이 있다. 예를 들어 Amazon Corretto는 AWS에 최적화 되어 있다.
  • 각 회사들은 대부분 윈도우, MAC, 리눅스 같이 다양한 OS에서 작동하는 버전의 자바도 함께 제공한다.

만약에 개발자가 오라클 OpenJDK를 통해 Java 프로그램을 구현하였어도, Amazon Corretto에서 동작하는데, 그 이유는 모든 자바 구현이 자바 표준 스펙을 통해 구현화되었기 때문입니다.

출처

 

01-04 자바의 8가지 특징

다음은 자바를 정의하는 단어이다. 이 가운데 자바의 8가지 중요한 특징을 살펴보자. > A **simple**, **object-oriented**, distributed, *…

wikidocs.net

 

자바 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 자바Java패러다임프로그래밍 패러다임: 객체 지향 프로그래밍 (클래스 기반 프로그래밍), 구조적 프로그래밍, 명령형 프로그래밍, 제네릭 프로그래밍, 반영, 병

ko.wikipedia.org

Java의 정석

김영한의 자바 입문

'Language > Java' 카테고리의 다른 글

[Java] 조건문, 반복문  (0) 2023.12.15
[Java] 연산자  (0) 2023.12.14
[Java] Java 변수 선언, 데이터 타입  (0) 2023.12.14
[Java] 자바 프로그램 실행해보기  (0) 2023.12.14
[Java] JVM?? JDK?? 용어 정리  (0) 2023.12.14