Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

DevYGwan

JAVA 특징 정리 본문

Study/JAVA

JAVA 특징 정리

YGwan 2023. 1. 4. 17:49

 

자바의 역사

  • '썬' 의 언지니어들에 의해서 개발되었다. (제임스 고슬링과 아서 밴 호프와 같은 개발자들이 발명함)
  • 자바의 원래 목표는 가전제품 등의 소형 기기에 탑재될 소프트웨어를 만드는 것이었다.
  • 자바의 기본 구문은 C++에서 객체지향 관련 구문은 스몰톡이라는 객체지향언어에서 가져왔다.
  • 그런데, 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자 운영체제에 독립적인 JAVA가 적합하다고 생각해 개발 방향이 바뀌었다.
  • 거기다 네트워크와 분산처리에 용이해 서버를 개발하는데 용이하다.(Servlet, JSP 등) -> JAVA SPRING이 등장했다.

 


 

자바 언어의 특징

 

  • 운영체제에 독립적이다.
    • 자바 가상 머신(JVM)을 통해 가능하다.
    • 자바 응용 프로그램은 운영체제나 하드웨어가 아닌 JVM 하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
    • 즉, 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다.

 

  • 객체 지향 언어이다.
    • Object - Oriented Programming language 중 하나이다.
    • 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어 있다.
    • 간결하면서도 명료한 객체지향적 설계가 가능하다.

 

  • 자동으로 메모리를 관리해 준다.
    • 가비지 컬렉터(Garbage Collector)가 자동적으로 메모리를 관리해 준다.

 

  • 네트워크와 분산처리를 지원한다.
    • 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있도록 지원한다.

 

  • 멀티스레드를 지원한다.
    • 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 관계없이 구현가능하고 관련된 라이브러리가 많다.
    • 여러 스레드에 대한 스케쥴링을 자바 인터프리터가 담당하게 된다.

 

  • 동적 로딩(Dynamic Loading)을 지원한다.
    • 자바는 동적로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
    • 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
    • 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

 

 


 

객체 지향 언어란

  • 객체지향이론의 기본 개념 : "실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다."
  • 객체지향언어의 주요 특성
    • 코드의 재사용성이 높다.
    • 코드의 관리(유지보수)가 용이하다.
    • 신뢰성이 높은 프로그래밍을 가능하게 한다.
  • 이러한 위의 규칙들을 이용해 코드 간에 서로 긴밀한 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다.
  • 상속성, 다형성과 같은 특징으로 인해 재사용성과 유지보수 그리고 중복된 코드의 제거가 용이해졌다.

 


 

JVM

  • 자바의 가장 중요한 요소 중 하나로 Java Virtual Machine의 약자이다.
  • 직역하자면, 자바를 실행하기 위한 가상 컴퓨터라는 의미이다.
  • 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되기 때문에 OS에 종속적이다. 하지만 자바 애플리케이션의 경우 JVM을 거친 후 OS에 거쳐 하드웨어에 전달된다. 또한 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석되기 때문에 속도가 느리다.
  • 하지만 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술이 적용되어 속도의 격차를 많이 줄였다.
  • JVM의 피연산자 스택(operand stack)이 피연산자를 4byte단위로 저장하기 때문에 4byte보다 작은 자료형의 값을 계산할때는 4byte로 변환하여 연산이 수행된다.

 

 

 

'Study > JAVA' 카테고리의 다른 글

"좋은 코드"의 작성 기술  (2) 2024.01.22
ArrayList<>(), List.of(), Arrays.asList() 차이점  (0) 2022.11.16