![](https://blog.kakaocdn.net/dn/cjrYlk/btsFF1kxvzT/72DqM99Y0ZD0ykIWNy49VK/img.jpg)
JAVA란?
1995년도 처음 썬 마이크로시스템즈(Sun Microsystems) 에서 자바(JAVA) 언어를 발표한 후,
지금까지 자바는 성공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있다.
자바는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었다.
오크는 처음에는 가전제품에서 사용될 목적이었지만,
인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고 이름도 자바로 변경되었다.
JAVA언어를 발표한 1995년부터 1999년까지는 윈도우(Windows) 프로그램 개발이 주류였기 때문에
C++ 언어에 비해 자바는 아주 열세였다. 자바는 메모리 및 CPU를 지나치게 많이 사용하기 때문에
윈도우 프로그래밍 언어로는 부적합하다는 문제점이 있었지만 1999년도부터 인터넷이 활성화되면서 웹 애플리케이션 구축용 언어로 자바가 급부상했다. 그이유는 기업체 및 공공기관의 다양한 서버 운영체제에서 단 한 번의 작성으로 모든 곳에서 실행 가능한 언어는 자바뿐이었기 때문이다. 초기의 자바는 가전 제품에 탑재할 프로그래밍 언어로 개발되었지만, 지금은 스마트폰을 비롯해서
각종 장비와 데스크톱에서 실행되는 애플리케이션, 그리고 금융, 공공, 대기업 등의 엔터프라이즈 기업 환경에서
실행되는 서버 애플리케이션을 개발하는 중추적인 언어로 자리매김하고있다.
자바의 사용용도?
그렇다면 1999년 부터 쭉 자리매김 하고 있는 JAVA가 다양한 곳에서 어떻게 사용 되고 있는지 알아보자
1.게임 개발
많은 인기 모바일, 컴퓨터 및 비디오 게임이 Java로 작성됩니다. 기계 학습이나 가상 현실과 같은 첨단 기술이 통합된 최신 게임도 Java 기술로 작성됩니다.
2.클라우드 컴퓨팅
Java는 WORA(Write Once and Run Anywhere)라고도 하며 분산 클라우드 기반 애플리케이션에 적합합니다. 클라우드 공급자는 다양한 기본 플랫폼에서 프로그램을 실행하기 위해 Java 언어를 선택합니다.
3.빅 데이터
Java는 복잡한 데이터 집합과 방대한 양의 실시간 데이터를 처리할 수 있는 데이터 처리 엔진에 사용됩니다.
4.인공 지능
Java는 기계 학습 라이브러리의 발전소 역할을 합니다. Java는 자연어 처리 및 딥 러닝과 같은 인공 지능 애플리케이션 개발에 적합한 안정성과 속도를 갖추고 있습니다.
5.사물 인터넷
Java는 인터넷에 독립적으로 연결할 수 있는 엣지 디바이스의 센서 및 하드웨어 프로그래밍에 사용되었습니다.
자바의 특징?
이렇게 다양한 곳에서 사용되는 JAVA의 특징에 대해서 확인해보자
- 이식성이 높은 언어이다.
이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
예를 들면 MS 윈도우(Microsoft Windows) 에서 실행하는 프로그램을 리눅스 또는 유닉스 같은
다른 OS에서 실행할 수 있다면 이식성이 높은 것이고, 실행할 수 없다면 이식성이 낮다고 볼 수 있다.
자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE: Java Runtime Environment) 이
설치되어 있는 모든 운영체제에서 실행 가능하다.
- 객체 지향 언어이다.
프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을
완성하는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programming) 이라고 한다. 이때 사용되는 언어를 객체 지향 언어라고 한다. JAVA는 100% 객제 지향 언어로, 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.
- 함수적 스타일 코딩을 지원한다.
대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하다.
자바는 함수적 프로그래밍을 위해 람다식(Lambda Expressions)을 자바 8부터 지원한다.
람다식을 사용하면 컬렌션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.
- 메모리를 자동으로 관리한다.
C++의 경우 메모리에 생성된 객체를 제거하기 위해서 개발자가 직접 코드를 작성해야 되는데 만약 이 작업을 성시히 해주지 않으면 , 프로그램은 불완전해지고 갑자기 다운되는 현상이 발생한다.
반면 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 자바가 직접 관리한다.
객체 생성시 자동적으로 메모리 영역을 찾아서 할당하고 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다. 따라서 개발자는 메모리 관리의 수고를 덜고, 핵심 기능 코드 작성에 집중할 수 있다.
- 다양한 애플리 케이션을 개발할 수 있다
JAVA는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제 (OS: Operating System) 에서 실행되는 프로그램을 개발할 수 있다.
단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱에
이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.
자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(Edition) 형태로 정의하고 있다.
- 멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.
하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서
병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다. 프로그램이 실행되는 운영체제에 따라서 멀티 스레드를 구현하는 방법이
다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이
멀티 스레드를 쉽게 구현할 수 있다.
- 동적 로딩(Dynamic Loading)을 지원한다.
자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성된다.
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적로딩해서 객체를 생성한다.
또한 개발 완료 후 유지보수(수정)가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다.
따라서 유지보수를 쉽고 빠르게 진행할 수 있다.
- 막강한 오픈 소스 라이브러리가 풍부하다.
자바는 오픈소스(Open Source) 언어이기 때문에 자바 프로그램에서 사용되는 라이브러리 또한 오픈소스가 넘쳐난다.
고급 기능을 구현하는 코드를 직접 작성할 경우, 시간과 노력이 필요하고, 실행 안전성을 보장할 수 없지만, 검증된 오픈소스
라이브러리를 사용하면 개발 기간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.
참고도서
- 이것이 자바다(신용권 지음)
'JAVA > self-study' 카테고리의 다른 글
[JAVA] Map 연습문제 (0) | 2024.05.23 |
---|---|
[JAVA] 배열의 얕은복사와 깊은복사 (0) | 2024.03.18 |
[IntelliJ] 매크로 설정 (0) | 2024.03.15 |
[JAVA] JVM, JDK, JRE란? (2) | 2024.03.10 |
[IntelliJ] JAVA 콘솔창에서 한글이 깨지는 경우 (0) | 2024.03.10 |