본문 바로가기

#Java

Java란 무엇인가?

반응형

Java란 무엇인가?

 

 

 

 

 

 

 

 

[작성자의 다른 글 보러가기: 'Web Server와 Was의 차이는 (Feat. 정적 페이지와 동적 페이지)']


 

 

#Java의 기본개념 (출처: 위키백과사전)

 

Java는 Java로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다. 자바 프로그램은 운영체제나 하드웨어에 의존하지 않는 바이트코드 (중간언어)추상적인 코드로 구현된다. 따라서, 자바 프로그램을 실행하기 위해서는 자바가상머신(JVM)과 개발에 필요한 표준 라이브러리 세트와 컴파일러의 환경만 맞추면 자바프로그램모든 환경에서 동일하게 동작한다. 이러한 실행환경과 개발환경을 제공하는 것이 자바 플랫폼이다.

 

 

 


 

 

 

 

 

#Java의 장단점은 무엇일까?

 


 

JAVA의 장점

 

 

- 객체지향 프로그래밍 언어(OOP: Object Oriented Programming)

  • 유지보수가 쉽고 직관적인 코드 분석이 가능하다.
  • 설계도인 클래스를 작성하여. 객체와 객체를 연결하여 목적에 맞는 프로그램을 완성한다.

 

 

- 분산 네트워크 기술 지원

  • 자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있고, HTTP 프로토콜을 지원한다.

 

 

- 멀티쓰레드(Multi Thread) 지원

  • 동일한 쓰레드동시에 수행할 수 있다.
  • 사용자 인터페이스 쓰레드와 장시간 계산이 필요한 쓰레드가 동시에 필요할 때 효과적이다.

 

 

- 이식성이 높음

  • 자바가상머신(JVM)에서 작동하기 때문에 운영체제(ex: Window, Linux)의 종류에 상관없이 작동한다.

 

 

 

- 자동 메모리 관리(Garbage Collector)

  • 객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료된 객체는 Garbage Collector를 실행시켜 자동으로 메모리에서 체크하고 반환해준다.
  • 자바는 개발자가 직접 메모리에 접근할 수 없으며, 메모리자바 직접 관리한다.

 

 

- 동적 로딩 지원

  • 프로그램 실행 시 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
  • 그러므로 애플리케이션의 변경사항비교적 적은 작업만으로 처리할 수 있다.

 

 

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

  • 자바는 오픈소스언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스 양이 방대하다.
  • 고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션을 다시 컴파일 할 필요가 없다. 따라서 유지보수쉽고 빠르게 할 수 있다.

 

 


 

 

JAVA의 단점

 

 

- 속도가 느림

  • 자바는 실행을 위해 자바 가상머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느려서 처리 속도가 중요한 애플리케이션에는 적합하지 않다.
  • 하지만 바이트코드(byte code)를 하드웨어의 기계어로 변환해주는 JIT컴파일러와 Hotspot(향상된 최적화 기술)과 같은 기술적용으로 JVM 기능이 향상되어 속도문제가 개선되었다.

 

 

 

- 예외처리가 불편함

  • 자바는 예외처리가 잘 되어 있지만, 개발자가 직접 일일이 지정해 줘야 한다는 불편함도 있다. 그렇게 하지 않으면 컴파일조차 거부된다.

 

 

 

- 하드웨어 정밀 조정 불가

  • 하드웨어에 연결할 수 없기 때문에 직접 하드웨어를 정밀하게 조정해야 하는 프로그램에는 적합하지 않다.

 

 

 


 

 

 

 

#Java는 객체지향언어라고 하는데, 객체지향 언어에 대해 알아보자 


 

 

 

 

#객체지향 언어란?

 

 

객체지향언어란, 프로그램을 데이터와 처리방법으로 나누지 않고, 객체를 만들고 조작하며 객체끼리 관계를 맺음으로서 다수의 객체가 서로 상호작용할 수 있도록 하는 것이다. 다시 말해, 객체를 조립해서 전체의 프로그램을 만드는 조립식 프로그래밍이다.

 

 

 

 

#객체(Object)란?

 

물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말한다. 예를 들어, 물리적으로 존재하는 학생, 회원 등과 추상적으로 생각할 수 있는 생산, 주문, 배송 등이 모두 객체가 될 수 있다.

 

 

 

 

 

#클래스(Class)란?

 

객체라는 추상적인 개념코드화 한 것클래스라고 한다. 간단하게 생각하면, 클래스는 붕어빵틀 그리고 객체는 붕어빵 정도로 생각하면 좋다. 이처럼 객체를 만들기 위한 설계도 개념인 클래스는 객체의 속성과 기능을 표현하는 변수와 메소드를 포함한다.