단의 개발 블로그

자바란? 본문

Language/Java

자바란?

danso 2024. 4. 18. 08:46

자바란?

자바는 1995년 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 연구원들이 개발한 언어이다. 처음에는 가전제품에 사용하는 언어로 만들어졌으나, 웹과 모바일에서 가장 많이 사용된다. 

자바로 가능한 일

  •  웹 프로그래밍
    • Servlet, JSP, Spring 프레임워크 등과 같은 기술을 사용하여 웹 프로그래밍
  • 안드로이드 애플리케이션 
    • 안드로이드 개발 시 사용하는 메인 언어, 안드로이드 스튜디오를 사용하여 쉽게 제작
  • 게임 개발
    • LWJGL 라이브러리를 사용하여 게임 개발도 가능
  • DB
    • JDBC, JPA 등과 같은 기술을 사용하여 DB 처리  
  • 빅데이터 및 분산처리
    • 분산 처리 시스템을 사용하여 많은 데이터를 가공 및 시각화

자바로 할 수 없는 일

  • 시스템 프로그래밍
    • 운영체제, 드라이버, 커널 등의 개발은 C/C++언어를 사용하여 개발
  • 높은 성능을 요구하는 일
    • GC(Garbage Collection)과 JIL(Just-in-time) 컴파일러와 같은 기능 때문에 실행 속도가 느림
  • IOS 앱 개발
    • IOS 개발은 swift/Objective-c가 메인 언어, 자바로 개발 불가능

자바의 특징

  • 객체 지향 언어
    • 객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 하나씩 조립 및 연결하여 프로그램을 완성하는 것
    • 먼저 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞게 작업
    • 객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원
  • 이식성
    • 서로 다른 실행환경을 가진 시스템 간 프로그램을 옮겨 실행 가능
    • 자바 실행환경(JRE)가 설치된 모든 환경에서 실행 가능
  • 메모리 관리
    • 자바는 개발자가 직접 메모리에 접근할 수 없으며, 메모리는 자바가 직접 관리
    • 객체 생성 시 자동으로 메모리 영역에 할당, 사용이 완료되면 Garbage Collector가 사용하지 않는 객체를 제거
  • 멀티 스레드
    • 스레드 생성 및 제어와 관련된 라이브러리를 제공, 운영체제 상관 없이 멀티스레드를 쉽게 구현
  • 동적로딩
    • 실행 시 모든 클래스가 로딩되는 것이 아닌, 필요한 시점에 클래스를 로딩
  • 분산환경지원
    • TCP/IP 라이브러리가 기본으로 포함
    • http와 http 프로토콜 지원
  • 오픈소스 라이브러리 풍부
    • 자바는 오픈소스 언어이며 프로그램 내에서 사용하는 라이브러리 및 오픈소스 양이 방대
    • 유지보수를 쉽고 빠르게 진행 가능
  • 단점
    • 실행 시 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 속도가 느림
    • 예외 처리가 잘 되어 있지만, 개발자가 지정해야함
    • 다른 언어에 비해 작성해야 하는 코드양이 증가함 

JVM / JDK / JRE
자바는 컴파일러를 통해 기계어로 변환된다. 컴파일이란 특정 프로그래밍 언어를 기계가 이해할 수 있는 언어로 번역하는 과정을 뜻한다. 자바의 경우 JVM(Java Virtual Machine)이 이해할 수 있는 바이트 코드로 변환하는 것을 의미한다. JVM은 바이트 코드를 운영체제에 맞는 기계어로 반환한다. 

  • JDK(Java Development Kit) : JDK 설치 시 자동으로 JRE가 설치된다. JDK는 추가적으로 자바 컴파일러(Java compiler)를 포함하고 있다.
  • JRE(Java Runtime Environment) : 자바 클래스 라이브러리(Java class libraries) + 자바 가상머신(JVM)  + 자바 클래스 로더(Java class loader)를 포함, 클래스 로더, 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합 한 후 JVM에게 넘김, JRE는 JVM이 원활하게 작동할 수 있는 환경을 만들어주는 기능을 함
  • JVM(Java Virtual Machine) : 자바 프로그램이 어느 운영체제에 상관 없이 실행될 수 있도록 해준다.

 

 

출처

https://helloworld-88.tistory.com/3

https://m.blog.naver.com/goreng2/221770110714

https://wikidocs.net/199