자바의 특징
자바에는 많은 기능이 주어집니다. 이 기능들은 자바 전문용어로 잘 알려져 있습니다.
자바 기능들은 단순하고 이해하기 쉽도록 아래와 같이 나열하였습니다.
1. Simple( 단순함 )
2. Object-Oriented ( 객체 지향 )
3. Platform independent ( 독립적인 플랫폼 )
4. Secured ( 보안 )
5. Robust ( 신뢰와 내구성이 있는 )
6. Architecture neutral ( 중립적인 아키텍쳐 )
7. Portable ( 이식성 )
8. Dynamic ( 동적 )
9. Interpreted ( 소스코드가 기계어로 변환되어 실행 )
10. High Performance ( 고성능 )
11. Multithreaded ( 다중 처리 )
12. Distributed ( 분산 )
Simple
선 마이크로시스템즈(sun)에 따르면, 자바 언어는 아주 단순합니다.
그 이유는
- 자바의 구문(syntax : 문장을 만들어 내는 형식)은 C++에 기초했기 때문입니다.
( 그래서 C++ 이후에 자바를 배우는 게 더 쉽다고 합니다. )
- 혼란을 주는 기능이나 자주 사용하지 않는 것들을 제거 했기 때문입니다.
( 예를 들면 명시적 포인터(Explicit pointers), 연산자 오버로딩(Operation Overloading) 등등)
- 별도로 참조된 객체(Object)를 제거하는 것은 필요하지 않습니다. 그 이유는 Java의 가비지 컬렉션(Automatic Garbage Collection)이 있기 때문입니다.
연산자 다중 오버로딩 ( operator overloading ) : 같은 연산자라도 피연산자의 자료형태에 따라 처리 형식이 다르게 정의됨을 말합니다.
Automatic Garbage Collection : 자동으로 메모리 할당을 해지합니다.
Object - oriented (객체 지향)
객체지향의 의미는, 우리가 우리의 소프트웨어를 데이터와 실행을 포함하는 object의 다른 타입의 조합으로 작성하는 것을 말합니다.
객체지향 프로그래밍은(OOPs, 약어)은 몇가지 규칙을 통해 소프트웨어 개발과 유지를 간소하게 하는 하나의 방법론이라고 할 수 있습니다.
객체지향 프로그래밍의 기본개념은 아래와 같습니다.
1. Object ( 객체 )
2. Class ( 클래스 )
3. Inheritance ( 상속 )
4. Polymorphism ( 다형성)
5. Abstraction ( 추상적 개념 )
6. Encapsulation ( 요약 )
Platform Independent ( 독립 플랫폼)
플랫폼은 프로그램이 실행되는 하드웨어나 혹은 소프트웨어 환경을 말합니다.
소프트웨어 베이스와 하드웨어 베이스의 2가지 타입의 플랫폼이 있고, 자바는 소프트웨어 베이스 플랫폼을 제공합니다.
자바 플랫폼은, 다른 하드웨어 베이스 플랫폼 상단에서 실행하는, 소프트웨어 베이스 플랫폼이라는 점에서 볼 때 대부분의 다른 플랫폼과는 다르다고 할 수 있습니다.
이 플랫폼은 2가지 구성요소를 가집니다.
1. runtime 환경
2. API (Application Programming Interface)
자바 코드는 멀티 플랫폼에서 실행 될 수 있습니다. ( 예를 들면, Windows,Linux, Sun Solaris, Mac/OS 등등 )
자바 코드는 컴파일러와 바이트코드 변환에 의해 컴파일 될 수 있습니다.
여기서 bytecode ( 바이트 코드 )는 플랫폼에 독립된 코드라고 하는데 그 이유는 다중(multiple) 플랫폼에서 실행 될 수 있기 때문입이다.
즉, 한번 작성한 코드로 어디서든 구동할 수 있다는 말입니다. [ Write Once and Run Anywhere ]
Write Once and Run Anywhere : 선(SUN) 마이크로시스템즈에 의해 만들어진 자바의 표어, 자바의 큰 장점으로, 한번 개발하면 다른 곳에서도 사용할 수 있습니다. 예를 들어, 윈도우에서 개발해서 다른 운영체제에서 사용하는 식이죠
보안
자바는 보안성이 있습니다.
왜냐하면, 아래의 2가지 이유 때문입니다.
1) 명시된 포인터가 없습니다.
2) 버추얼 머신 샌드박스 안에서 프로그램을 실행합니다.
* Classloader - 네트워크 소스로부터 가져온 것들에서 로컬 파일 시스템 클래스의 패키지로 분리시켜 보안성을 강화
* Bytecode verifier - 객체로 정당한 접근을 침해할 수 있는 불법적인 코드 때문에 조각 코드들을 확인
* Security manager - 클래스가 로컬 디스크의 읽기와 쓰기 등에 접속할 수있는 리소스를 결정합니다.
자바 언어는 이런 보안적 요소을 제공합니다.
일부 보안은 SSL, JAAS, cryptography 등등을 통해 어플리케이션 개발자에 의해 제공될 수 있습니다다.
Robust
Robust 는 단순하게 '강력함'을 의미합니다. 자바는 메모리 관리가 탁월합니다.
포인터의 개념이 없기 때문에 손쉽게 보안 문제를 해결해줍니다.
자바에는 automatic garbage collection 있습니다. 또한 자바에는 예외 처리와 타입 검사 메커니즘이 있습니다.
이런 중요점들은 자바를 강력하게 만듭니다.
Robust 는 의미가 조금 애매한데, 선 마이크로시스템즈는 Robust 를 신뢰할 수 있는, 혹은 믿을 수 있는, 쉽게 에러가 일어나지 않는, 보통 어플리케이션 프로그램과 관련있다고 합니다.
[ http://docs.oracle.com/apps/search/search.jsp?category=all&q=robust&product= ]
Architecture-neutral (중립적인 아키텍쳐)
특성에 의존하는 구현이 없습니다. ( 예를 들어, 초기에 변수 크기를 결정하지 않습니다. )
portable ( 이식성 )
우리는 자바 바이트코드를 모든 플랫폼에게 옮길 수 있습니다.
High-performance (고성능)
Java는 전통적인 인터프리트(한줄씩 코드를 읽어내는) 기술보다 더 빠르지만 네이티브 코드에서 byteCode가 닫기 상태이므로 컴파일 언어인 C++보다는 다소 느립니다.
Distributed
우리는 자바에서 분산된 어플리케이션이 만들 수 있습니다.
이것을 위해 RMI(remote method invocation)와 EJB(Enterprise Java Beans)라는 분산된 어플리케이션을 만들기 위해 사용합니다. 온라인 상태에서 어떤 기기가 메소드를 호출하여도 해당 파일에 접근할 수 있을 것입니다.
RMI : 자바에서 분산기능을 도와주는 패키지
EJB : sun에서 개발한, 분산형 자바 어플리케이션을 개발하기 위한 서버측 컴포넌트, 기업환경 시스템 구현에 사용
Multi-threaded
스레드는 동시에 실행되는 별도의 프로그램과 같습니다.
우리는 이 멀티 스레드 통해 한번에 많은 업무들을 다루는 자바 프로그램을 작성할 수 있습니다.
멀티 스레딩의 주요한 이점은 같은 메모리를 공유한다는 것입니다. 멀티미디어와 웹 어플리케이션 등등 있어서 스레드는 중요합니다.
영어원문내용출처 : http://www.javatpoint.com/
번역,의역 및 작성 : 초코토끼
검수 : 개발토끼
오역 및 오타의 지적은 겸손히 받겠습니다.
'IT Story > about Java' 카테고리의 다른 글
자바 Object Oriented Programming System(OOPs) 객체지향 개념 (0) | 2015.09.28 |
---|---|
JDK, JRE 그리고 JVM의 차이 (0) | 2015.09.27 |
유니코드(Unicode ) 시스템 (0) | 2015.09.27 |
자바(JAVA)의 역사 ! (0) | 2015.09.23 |
자바(JAVA)란 무엇일까요? (0) | 2015.09.22 |