What Is JAVA?

uglyduck.dev·2020년 9월 20일
0

개념 모아 🗂

목록 보기
5/40

   썬 마이크로시스템즈에서 개발한 객체지향적🔍 프로그래밍 언어로써 1995년 3월에 발표되었으며, 지금까지도 전 세계에서 가장 많이 사용되고 있는 언어 중에 하나이다.

tiobeimg

🔍 객체지향적 : 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

자바의 역사

  • 1991년 6월 제임스 고슬링에 의해 처음 사용되었으며, 오크(Oak) 또는 그린(Green)이라고 명칭 했으나, 단어 리스트 중 무작위로 뽑은 자바(Java)를 선택했다. 기존의 C/C++와 같은 스타일의 언어를 지향하여 가상 머신을 구현하는 것을 최초 목표를 두었다. 

  • 1995년 "Write Onece, Run Anywhere(한 번 쓰고 어느 곳에도 실행)"을 슬로건으로 첫 공개 자바 버전(1.0)을 제공하였다. 자바 애플릿의 등장으로 웹 페이지 내부에서 실행 가능할 수 있었고 자바의 인기는 급상승하였다. 이후 꾸준한 업데이트와 버전업을 통해 다양한 기능을 지원하여 지속적인 인기를 누리게 된다.

  • 2009년 4월 20일 썬 마이크로시스템즈가 오라클에 인수 합병됨에 따라 자바에 대한 권리 및 유지보수 또한 오라클로 넘어가게 되었다.

자바의 핵심 목표

  • 객체 지향 방법론을 사용해야 한다.
  • 같은 프로그램이 여러 운영체제에서 실행될 수 있어야 한다.
  • 컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.
  • 원격 코드를 안전하게 실행할 수 있어야 한다.
  • 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.

자바의 특징

장점

이식성 높은 언어이다.

이식성

  • 리눅스와 유닉스와 같이 프로그램 소스파일을 수정한 후, 재컴파일 과정을 거치지 않아도, 자바 실행 환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행이 가능하다.

객체 지향 프로그래밍(OOP)에 최적화되어있다.

객체 지향 프로그래밍

  • 아무리 작은 프로그램이라도 객체를 만들어 사용한다.
  • 객체를 고려하여 설계되었으므로 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.

메모리를 자동으로 관리한다.

  • 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 하는 C++과 달리 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되어있다.
  • 메모리는 자바가 직접 관리한다.
  • 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 가비지 콜렉터를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.

다양한 애플리케이션을 개발할 수 있다.

  • 다양한 운영체제에서 실행되는 여러 형태의 애플리케이션(콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱)을 개발할 수 있다.
  • 개발 도구와, API를 묶어 *에디션(Edition) 형태로 정의하고 있다.

JAVA SE (Standard Edition)

  • 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다.

  • 자바 SE 구현체인 자바 개발 키트 설치가 선행되어야 한다.

JAVA EE (Enterprise Edition)

  • 분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다.

  • Servelet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 EJB (Enterprise Java Bean) 그리고 XML 웹 서비스 등이 있다.

멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.

  • 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우, 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요한데, 자바는 스레드 생성 및 제어와 관련된 API를 제공하고 있기 때문에 운영체제와 상관없이 멀티 스레드를 쉽게 구현할 수 있다.

동적 로딩(Dynamic Loading)을 지원한다.

  • 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
  • 개발 완료 후 유지보수 발생 시 해당 클래스만 수정하면 되므로 불필요한 컴파일이 발생하지 않는다.

오픈 소스 라이브러리가 풍부하다

  • 이미 검증된 오픈소스 라이브러리가 다수 존재하므로 코드의 안정성과 개발 기간 단축의 이점이 있다.

단점

기계어보다 속도가 느리다

  • JVM에 의해 기계어로 번역 되고 실행되므로 C와 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다.
  • JVM내부의 최적화된 JIT 컴파일러를 통해 속도의 격차는 많이 줄어들고 있다.

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글