자바의 대한 간단한 장단점 및 특징에 대해서 포스팅 해보려고 합니다!
장점
간단하다(Simple)
- 자바는 C++에 가깝지만 훨씬 간단합니다. 자바는 고급 언어들에 들어 있는 여러 가지 요소들 중에서 반드시 필요하지 않다고 생각된 부분들은 모두 제거한 언어입니다.
객체 지향적이다(Object-oriented)
- 자바는 숫자(int, float, long 등)나 논리값(treu, false)을 제외한 거의 모든 것이 객체로 구성되어 있습니다. 실제로 자바는 Object 클래스에서 모든 클래스를 파생합니다.
자바는 이러한 이유로 숫숫자(int, float, long 등)나 논리값(treu, false)을 원시 자료형이라고 합니다.
인터프리터 언어이다(Interpreted)
- 자바는 정확하게 말하면 커파일 언어인 동시에 인터프리터 언어입니다. 자바는 먼저 텍스트 소스를 컴파일 하여 2진 파일(클래스 파일)로 만든 다음 자바 런타임이 클래스 파일을 인터프리터하면서 실행합니다. 먼저 시스템에 무관한 2진 파일을 만듬으로써 자바는 커파일 언어에 가까운 속도와 시스템 독립성을 동시에 얻을 수 있습니다.
강력하다(Robust)
- 자바는 포인터 연산을 지원하지 않습니다. 이는 잘못된 주소를 가르킬 가능성을 사전에 없앤 것인데요.자바는 모든 메모리 접근을 자바 시스템이 관리하고 제한하며 또한 예외 핸들링을 하여 시스템 붕괴의 우려가 없습니다. 예를 들어 자바는 리소스 관리를 하는데 사용이 끝난 리소스를 시스템이 메모리에서 삭제하는 방식을 채택하고 있어 메모리 누출에 대한 고민을 프로그래머가 할 필요가 없다는 장점이 있습니다.
안전하다(Secured)
- 자바는 프로그램 작성 시 자료형 타입에 굉장히 민감합니다. 이것은 마치 코딩할 때 잔소리꾼이 끊임없이 따라다니며 잘못된 코드를 작성하지 않게끔 도와주는 역할을 합니다. 그래서 자바는 일단 컴파일만 되면 실행 시 오류가 발생하는 경우가 다른 언어에 비해 현저히 낮다는 장점이 있습니다. 파이썬과 같은 동적 언어에 익숙한 프로그래머라면 자바의 이렇듯 유연성이 없는 고지식한 면을 싫어할 수 있습니다.(난가?) ..
단점
느리다(Slow)
- 자바는 C와 C++와 같은 네이티브 언어에 비해 많은 메모리를 소비합니다. 또한 코드를 기계어로 변환하기 위해 인터프리터의 추가 작업이 생겨 속도가 느립니다.
부족한 GUI(Shortage)
- 자바는 GUI에 관해서는 뒤떨어져 있습니다. 많은 프레임워크가 있지만 복잡한 GUI를 구축할 만큼 충분히 개발되지 않아 있어
GUI가 부족하다는 단점이 있습니다.
백업이 안된다(Backup)
- 자바는 사용자의 데이터를 백업하는 기능이 없습니다. 주로 데이터 저장에 중점을 두는데요? 백업 기능으로 보호가 되지 않는 다는 단점이 있습니다.
특징
플랫폼 독립적이다(Flatform independent)
- 자바의 실행 파일은 이진 코드(클래스) 파일입니다. 따라서 자바 런타임이 설치된 시스템에서는 어디서나 자바 프로그램을 실행할 수 있습니다. 자바는 많은 특징이 있지만 가장 큰 특징이라면 한번 작성한 프로그램은 OS에 상관없이 어디서든 둘러볼 수 있다는 점입니다. 이것은 자바 프로그램이 가상머신에 의해서 실행되기 때문인데요? 처음에 이 방식은 자바 가상 머신을 실행시켜서 프로그램을 돌려야 하기 때문에 좀 느리고 부담스러웠다. 하지만 지금은 하드웨어의 눈부신 발전과 여러 기술들의 개발로 이러한 단점들이 대부분 사라져버린 상태라고 합니다.
멀티 쓰레딩을 지원한다(Multithreaded)
- 멀티 쓰레드를 지원할 경우 하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있습니다. 특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되었으므로 멀티 CPU시스템에서 높은 효율을 낼 수 있습니다.
동적이다(Dynamic)
- 자바 인터페이스를 이용하면 하나의 모듈을 갱신할 때 다른 모듈을 모두 갱신할 필요가 없습니다. 이것은 인터페이스가 모든 인스턴스 변수와 도구의 실행문을 배제한 채 객체 간의 상호작용을 정의하기 때문입니다.
참고
'JAVA > Information' 카테고리의 다른 글
[JSP] 내부 객체란? request, session, application? (0) | 2023.09.27 |
---|---|
[JSP] Servlet구조와 HTTP 상태 코드 총 정리‼️ (1) | 2023.09.20 |
[JAVA] 자바 소켓(Socket)통신 이란? 개념 정리 (2) | 2023.07.31 |
[JAVA] 자바의 메소드(Method)란? 오버로딩(Overloading)이란? (0) | 2023.07.10 |
[JAVA] 자바 추상 클래스(abstract method)? (0) | 2023.07.07 |