Java

Java는 무엇인가(특징 및 장단점)

신비이 2024. 7. 14. 22:34
반응형

 

 

Java는 1995년 미국의 썬 마이크로시스템즈에서 개발된 객체지향 프로그래밍 언어로, 가장 큰 특징은 운영체제에 독립적이라는 점입니다. 즉, 자바로 작성된 프로그램은 운영체제에 관계없이 실행할 수 있습니다. 이로 인해 운영체제에 따라 프로그램을 수정하지 않고도 실행이 가능합니다. 또한, 다른 객체지향 언어에서 잘 사용되지 않는 기능을 제외함으로써 문법이 간결해지고, 비교적 쉽게 배울 수 있는 언어입니다. JVM(자바 가상 머신)을 통해 운영체제에 구애받지 않고 실행될 수 있는 객체 지향 프로그래밍 언어로, 어떤 환경에서도 동일한 방식으로 작동합니다.

 

 

Java 특징 및 장점
1. 객체지향언어 : 객체지향 언어의 특징인 캡슐화, 상속, 다형성을 완벽하게 지원합니다. 여기서 언급하는 캡슐화, 상속, 다형성은 객체지향 개념을 논할 때 더 자세히 설명하겠습니다. 우선, 자바는 이러한 특징들을 가지고 있다는 정도만 알고 있어도 좋습니다. 자바의 큰 특징 중 하나는 객체를 만들기 위한 설계도인 클래스를 작성하고, 이 클래스를 통해 생성된 객체와 다른 객체, 즉 클래스와 클래스를 연결하여 목적에 맞는 프로그램을 만드는 것입니다.

2. 플랫폼 독립성 : 바이트코드라는 중간형태로 컴파일이 되고, 이 바이트코드는 JVM을 통해서 어떤 운영체제에서든 실행될 수 있습니다. 그래서 개발자는 한 번의 코드 작성으로 모든 운영체제에서 프로그램을 실행할 수 있습니다.

3. 풍부한 표준 라이브러리 : 자바는 오픈소스 언어이며, 자바 프로그램에서 사용하는 라이브러리도 방대한 양의 오픈소스로 제공됩니다. 이 덕분에 고급 기능을 직접 구현하는 대신, 검증된 오픈소스 라이브러리를 활용할 수 있다는 장점이 있습니다.

4. 네트워크와 분산처리 : 자바는 인터넷과 대규모 분산 환경을 고려하여 다양한 네트워크 프로그래밍 라이브러리를 제공합니다. 이를 통해 네트워크 관련 프로그램을 비교적 짧은 시간 안에 쉽게 개발할 수 있도록 지원합니다.

5. 멀티스레드 지원 : 멀티스레드 기능은 다른 언어에서는 운영체제에 따라 구현 방법과 처리 방식이 다르지만, 자바에서는 시스템과 무관하게 멀티스레드 프로그램을 구현할 수 있습니다. 자바는 관련된 라이브러리를 제공하여 구현이 용이합니다. 또한, 여러 스레드에 대한 스케줄링을 자바 인터프리터가 담당하기 때문에 다른 언어에 비해 멀티스레드 기능을 비교적 쉽게 사용할 수 있습니다.

6. 동적 로딩 지원 : 자바로 작성된 프로그램은 여러 클래스로 구성되며, 실행 시 모든 클래스가 한꺼번에 로딩되는 것이 아니라, 프로그램 실행 중 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있습니다.

7. 메모리 : 개발자가 직접 메모리에 접근하지 않는 경우, 자바가 메모리를 자동으로 관리합니다. 예를 들어, 객체를 생성할 때 자바가 자동으로 적절한 메모리 영역을 찾아 할당하고, 가비지 컬렉터를 실행하여 사용하지 않는 객체를 자동으로 제거하는 기능에서 이러한 점을 확인할 수 있습니다.

8. 심플 : 자바는 간단하고 이해하기 쉬운 프로그래밍 언어로 배우고 실행하기 용이합니다. 또한, C와 C++의 포인터와 같은 복잡한 기능을 모두 제거하여 코드를 더욱 쉽게 작성하고 실행할 수 있도록 합니다.

 

 

Java 단점
1. 불편한 예외처리 : 자바(JAVA)는 try-catch 구문 등을 사용하여 예외 처리를 합니다. 안정성을 위해서는 상황에 맞는 예외 처리가 필요합니다. 따라서 개발자가 각각의 예외를 일일이 지정해야 하는 번거로움이 있습니다.

2. 속도문제 : 자바(JAVA)로 작성된 프로그램은 반드시 자바 가상 머신(JVM)을 통해 실행되므로 다른 언어에 비해 실행 속도가 느릴 수 있습니다. 그러나 JIT 컴파일러와 Hotspot 같은 기술이 적용되어, 바이트 코드를 하드웨어의 기계어로 변환하는 과정에서 JVM의 성능이 향상되어 속도 문제가 많이 개선되었습니다.
반응형

'Java' 카테고리의 다른 글

Java Date 날짜시간 다루기  (0) 2024.07.18
Java SimpleDateFormat 패턴 날짜 포맷  (0) 2024.07.17
Java split 문자열 자르기 분할  (0) 2024.07.16
Java substring 문자열 자르기  (0) 2024.07.15