It's easy, if you try

[JAVA] 언어 개요 - 특징 본문

언어/자바(Java)

[JAVA] 언어 개요 - 특징

s5he2 2021. 2. 14. 21:47

자바 언어의 탄생

1991년

Green Project에서 가정용 전자기기에서 사용되는 작은 컴퓨터 언어를 디자인 했다.

이때,

  1. 작고 견고한 언어, 신뢰할 수 있는 코드
  2. 특정 디바이스에 종속되지 않아야 함

와 같은 특성을 고려해 Virtual Machine에서 동작하는 중간코드를 생성해 이식성이 높은 언어를 디자인 했다.

1992년

초기 자바 언어는 절차지향언어와 객체지향 혼용해 사용했던 언어인 C++ 를 기반으로 개발되었다. 그러다가 C++ 의 여러가지 한계에 부딪혀

완벽한 객체지향 언어인 Oak 가 개발되었고 제임스 고슬링에 의해 명명된 Oak는 Oak라는 프로그램이 존재했기 때문에 이후 JAVA로 변경 되었다.

1994년

World Wide Web의 발전과 Mosaic의 사용에 주목

자바를 기반으로 한 웹 브라우저 제작 (HotJava 브라우저로 발전함)

applet이라 불리는 자바의 기능을 보여주기 위해 브라우저가 중간코드(bytecode)를 해석할 수 있도록 만듦

1996년~ 현재

Netscape 2.0에서부터 자바가 지원됨

많은 업체들이 자바를 지원하게 됨

자바 버전 1.2가 출시되면사. 자바 2 플랫폼으로 명명됨.


자바 언어의 특징

  1. 단순

    C++의 전위처리, 포인터 사용, 다중 상속, 구조체, goto문 사용, 연산자 중복 기능 등을 제외

    가비지 컬렉터에 의한 자동 메모리 관리로 할당된 메모리 해제를 신경쓰지 않아도 된다.

  2. 객체지향(object-oriented)

    ​ 언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어

    -> 재사용성을 높일 수 있음.

    코드의 재사용을 넘어 객체의 재사용을 뜻하며, 프로그램 개발에 필요한 수많은 클래스 라이브러리들을 API로 제공함

  3. 분산 처리(Distributed)에 용이하다.

    분산 환경에서 TCP/IP 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어이다.

    • TCP/IP 네트워크 기능 내장
    • HTTP/ FTP 등과 같은 프로토콜을 쉽게 사용할 수 있도록 라이브러리 제공
    • 서로 다른 컴퓨터 상의 객체들도 원격으로 호출하여 실행할 수 있는 원격 메서드 호출과 관련된 RMI(Remote Method Invocation)기능의 라이브러리 제공
  4. 인터프리터에 의해 실행됨

    .java 형태의 텍스트 파일 -> 컴파일러에 의해 자바가상머신에서 수행될 수 있는 중간코드로 컴파일된다. -> .class(클래스 파일 == 바이트 코드) -> 실제 실행을 위해 인터프리터에 의해 기계어로 변환 -> 컴퓨터에서 실행

    자바는 컴파일 언어임과 동시에 인터프리터 언어이다.

  5. 견고

    에러의 원인이 되는 요소들을 제거

    • 포인터를 사용하지 않음
    • 가비지 컬렉션
    • 데이터 타입 검사를 통해 에러 초기 검사
    • 실행시간에 발생하는 에러 초기
  6. 안전

    • 컴파일 시에 엄격하게 데이터 타입을 검사함으로써 프로그램 실행 시 발생할 수 있는 비정상적인 상황을 미리 감지
  7. 플랫폼 독립(Architecture Neutral)

    사용하는 운영체제나 CPU 등의 하드웨어 사양에 관계없이 실행될 수 있음.

    이식성이 높다.

  8. 높은 성능

    가비지 컬렉션 : 메모리가 할당된 객체의 상태를 추적 관리, 더이상 참조 되지 않으면 다종으로 할당된 메모리 해제 (불필요한 메모리 낭비 방지)

  9. 멀티스레드

    스레드 : 독자적으로 수행하는 하나의 작은 프로그램

    멀티스레드: 한번의 여러개의 스레드가 동시에 수행되는 과정 / 하나의 CPU가 여러 개의 프로그램을 동시에 수행하도록 함 (수행 속도를 빠르게 함)

  10. 동적

    변화하는 환경에 잘 적응되도록 설계됨

    기존의 프로그램에 영향을 주지 않고, 라이브러리에 새로운 메서드나 속성들을 추가할 수 있음

    프로그램과 프로그램에서 사용되는 라이브러리와의 연결을 실행시간에 수행

    -> 라이브러리의 변화를 곧바로 적용할 수 있음

 

 

Comments