SPB_220103 Day 1
Java의 역사 및 현재
1995년 제임스 고슬링과 그의 동료들에 의해서 시작된 프로젝트로 원래 Java는 원래 가전제품을 제어하기 위한 언어로 고안되었지만 웹의 등장으로 엄청난 성공을 거두면서 주류 언어가 되었다.
현재
한국에서는 정부나 기업의 시스템 통합 프로젝트가 대부분 자바로 구현되기 때문에 자바는 기업용 시장에서 두각을 나타냄
모바일 플랫폼인 안드로이드가 대성공을 거두면서 자바의 수요가 급증했다.
언어 특징
- 이식성이 높은 언어 a. 이식성이란 서로 다른 실행 환경을 가진 시스템에 간에 프로그램을 옮겨 실행할 수 있는 것, 즉 다른 환경에서 동일한 소프트웨어를 사용할 수 있다는 것이다.
- Java는 JRE(Java Runtime Environment) 의 JVM(Java Virtual Machine)위에서 돌아가기 때문에 운영체제 종류에 상관 없이 실행될 수 있다.
- 객체 지향 언어 하나의 기능을 객체로 만들고, 이러한 객체들을 결합해서 하나의 프로그램을 만든다. 즉 자동차 = 엔진 + 타이어 + 휠 등등 객체를 만들기 위해서 설계도인 클래스를 작성하고, 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 낸다.
- 함수적 스타일 코딩 지원 함수 프로그래밍을 위해 람다식을 지원하며 컬렉션의 요소를 필터링하고, 매핑하고, 집계 처리를 하는데 쉬워져 코드가 간결해진다
- 자동 메모리 관리 C언어는 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 한다. 하지만 자바는 메모리를 직접 관리하여 개발자의 메모리 수고를 덜고, 핵심 기능 코드 작성에 집중할 수 있다
- 다양한 애플리케이션 개발가능 자바는 윈도우, 리눅스, 유닉스 등 다양한 운영체제 환경에서 실행되는 프로그램을 개발할 수 있다. 단순한 콘솔 프로그램부터 클라이언트 용 윈도우 애플리케이션, 서버용 웹 애플리케이션 및 안드로이드 앱 까지 모든 곳에서 실행되는 프로그램 개발이 가능하다.
- 멀티쓰레드를 쉽게 구현 가능 하나의 프로그램이 동시에 여러 작업을 하거나 대용량 작업을 빨리 하기 위해 서브 작업으로 분리하여 병렬 처리 하려면 멀티쓰레드 프로그래밍이 필요하다 자바는 쓰레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 관계없이 멀티 쓰레트를 쉽게 구현 가능하다
- 동적 로딩 지원 자바 애플리케이션은 객체 지향으로 여러 개의 객체가 서로 연결되어 구성되는데 애플리케이션이 실행될 때 모든 객체가 실행되지 않고 객체가 필요한 시점에 클래스를 로딩 하여 객체를 생성 후 실행한다(이를 동적 로딩 Dynamic Loading이라고 한다). 또한 개발 완료 후 유지 보수가 발생하더라도 해당 클래스만 수정하면 되어 전체 애플리케이션을 다시 컴파일 할 필요가 없다. 즉 동적 로딩은 유지 보수를 쉽고 빠르게 해 준다.
- 오픈소스 라이브러리가 풍부 자바는 오픈소스 언어로 커뮤니티가 활성 되어있고, 심지어 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다. 고급 기능을 구현하는 코드를 직접 작성할 경우 시간과 노력이 필요하고, 실행 안정성을 보장할 수 없지만 검증된 오픈소스 라이브러리를 이용하면 개발 기간을 단축하며 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다. 수레바퀴를 직접 만들지 않아도 된다, 만들어 있는 걸 쓰자!
자바의 특징 및 단점 정리
특징
- 자바는 운영체제와는 독립적으로 실행할 수 있다.
- 자바는 불필요한 기능을 과감히 제거하여 다른 언어에 비해 배우기가 쉽다.
- 자바는 자동 메모리 관리 등을 지원하여 다른 언어에 비해 안정성이 높다.
- 자바는 연산자 오버로딩을 금지하고 제네릭을 도입함으로써 코드의 가독성을 높였다.
- 자바에 관한 수많은 참고 자료를 찾을 수 있다.
단점
- 자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다.
- 자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있다.
- 자바는 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.
자바 프로그램의 실행 과정
'STUDY > Java' 카테고리의 다른 글
Day 4 - 연산자 / 조건문 / 반복문 2 + 백준 문제 풀이 (0) | 2022.01.09 |
---|---|
Day 3 - 연산자 / 조건문 / 반복문 1 + 백준 문제 풀이 (0) | 2022.01.05 |
Day 2 - 변수 / 상수 / 자료형 / 특수문자 + 백준 문제 풀이 (0) | 2022.01.04 |