관리 메뉴

드럼치는 프로그래머

[JAVA] 자바의 특징 본문

★─Programing/☆─JAVA

[JAVA] 자바의 특징

드럼치는한동이 2007. 8. 6. 18:42

자바가 가지는 특징 및 다른 언어와의 개발환경에 있어서의 차이점에 대해서 설명하세요.

특징

1. C++에 가깝지만 훨씬 간편하며 친숙한 언어입니다.

- 단순성이라는 설계 목표에 따라 고급언어들에 들어있는 여러 가지 복잡한 기능을 제거 했습니다.

* 복잡한 동기화 요소 통합, 간단한 구문, 풍부한 라이브러리 클래스를 통한 편리한 프로그래밍등

- 자바에는 포인터의 개념이 없습니다.

* 유효하지 않는 메모리 참조를 막아 안전성을 높이기 위해 포인터 기능을 제거했습니다.

- 자바는 쓰레기 수집이란걸 통해서 자동적으로 메모리를 관리 하고 있습니다.

* 쓰레기 수집이 없다면 프로그래머가 사용하지 않는 메모리를 체크하고 반환하는 일을 수동적으로

처리해야할것이다. 비효율적인면도 있지만, 프로그래머가 보다 프로그래밍에 집중할 수 있도록

도와줍니다.

- 컴파일된후 나온 파일이 다르다. 자바는 컴파일 하게 되면 바이너리 파일로 되어 있습니다.

2. 객체지향 언어입니다.

- 프로그램을 기술할 때, 단계보다는 데이터와 데이터를 가공하는 함수들에 초점을 갖춘언어입니다.

- 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체 지향언어입니다.

- 모든 기능을 클래스화 해서 분리 작업이 가능하기 때문에 협업에 효율적이고 재사용이 유리합니다.

- 협업이 가능해 개발 시간이 줄어듭니다.

3. 플랫폼에 독립적입니다.

- 다양한 네트워크환경 및 하드웨어에서 사용 가능하도록 개발되어있습니다.

* HTTP등과 같은 TCP/IP네트워크 환경에서 동작하는 많은 프로토콜을 지원하는 라이브러리를

가지고 있습니다.

- 플랫폼에 독립적인 바이트코드를 이용하여 자바 가상 기계를 통한 인터프리터 방식으로 실행합니다.

4. 견고하고 보안에 강합니다.

- 인터넷과 대규모 분산환경을 염두해 풍부하고 다양한 네트워크 프로그래밍 라이브러를 통해 보다 짧은 시간에 쉽게 네트워크 관련 프로그램을 개발할수 있지만 다른 언어보다 안정성에 대한 중요성이 요구됩니다.

* Java코드는 바이러스,파일의 삭제나 수정,데이타 파괴 작업이나 컴퓨터 오류 연산등을 방지할 수

있는 환경에서 실행되도록 설계되었습니다.

* virus-free혹은 tamper-free시스템들의구축을 가능케합니다. 인증기술등은 공중키암호화에 기반을

두고 있습니다.

- 컴파일 할때, 유형 검사를 하여 에러를 막을 뿐만 아니라 도구들까지 명확한 유형 선언을 하도록 합니다..

- 포인터 연산을 지원하지 않음으로써 잘못된 주소를 가르킬 가능성을 없앴습니다.

- 모든 메모리 접근을 Java 시스템이 관리하고 제한하며 또한 예외 처리를 하여 시스템 붕괴의 우려가 없습니다.

* 메모리를 덮어 쓰거나 데이터를 망가뜨리는 가능성을 제거했습니다.

- 반복적인 형 검사를 통해서 프로그램의 신뢰성을 향상시킵니다.

5. 동적이고 멀티 스레드를 지원합니다.

- 시스템과는 관계없이 멀티스레드 구현이 가능합니다.

- 라이브러리 갱신의 경우 재컴파일이 불필요합니다.

 

개발환경

기계 중립적이며, 이식성이 뛰어나다는게 다른 다른언어와 구별되는 개발환경 차이점입니다.

- Web의 서버-클라이언트 환경에서 이기종 서버-클라이언트의 지원은 매우 중요한 문제입니다. 일반적으로 네트웍은 다양한 CPU와 OS를 가진 시스템들로 구성되어 있습니다. Java 응용 프로그램이 네트웍상의 어디에서든지 수행이 되기 위해서는 컴파일러가 기계 구조에 중립적인 오브젝트 파일 포맷을 생성해야 합니다. 그러므로, 실행 파일이 기계 중립적인 이진 코드입니다. 이 클래스 파일을 기계 종속적인 Java 런타임이 인터프리트하여 실행시키게 됩니다.

- 유형 정의를 시스템에 무관하게 정의하고 있습니다.

* 네트웍을 통해 프로그램을 다운받아 하드웨어 에 관계없이 사용하기 위해서는 근본적으로 아키텍처에 독립적이고 이식성을 보장하는 구조가 요구됩니다

* Java는 이러한 문제를 해결하게 위해 하드웨어 아키텍쳐, 운영체제 인터페이스, 윈도우 시스템에 독립적인 바이트 코드를 사용합니다.

- Java 프로그램은 Windows95/NT, Solaris2.x, Mac OS7.5와 같은 Java가 지원되는 모든 플랫폼상에서 Java 컴파일러에 의해 바이트 코드 형태로 컴파일되고, 인터프리터가 동작하는 Java 가상 기계에 의해 어떤 기종의 시스템에서도 쉽게 해석됩니다.

 

 

자바는 C와 비교할 때 스트링 처리에 있어서 차이를 가지고 있는데, 그 차이점에 대해서 설명하세요.

C/C++에서는 문자의 배열이나, 자바에서는 객체로 취급합니다.

- Java는 모든 것을 객체로 구현합니다. 심지어는 문자열(String)도 클래스로 구현되어 있습니다.

기존 C, C++에서 문자열이란 끝이 널 문자인 문자 배열로 구현되었습니다.

그러나 Java에서는 문자열을 String, StringBuffer 개체로 구현합니다.

그러므로 메모리를 효율적, 안정적으로 사용 가능합니다.

- 객체이므로 NEW 연산자를 통해서 객체 생성과정이 필요하지만, 인용부호(“,”)를 이용하여 문자의 연속으로 생성이 가능합니다.

 

 

클래스와 객체가 가지는 차이점에 대해서 간단히 설명하시오

객체 : 프로그램은 객체로 구성

데이터와 그 데이터를 가공하는 함수를 한데 뭉친 것을 말합니다. 즉 가운데 데이터들을 가지고 있고,주변에는 데이터를 가공하는 Method들로 외부로 들어오는 호출을 모조리 막고(Encapsulation) 있음으로써 프로그램이 서로 연관되는 데이터와 함수들끼리 모을 수 있고, 서로간에 데이터를 바로 접근을 못하기 때문에 프로그램을 고치기가 용이합니다.

 

클래스 : 자바 프로그래밍의 기본 단위

객체 지향 설계는 객체의 생성을 위한 용기로서 클래스 개념을 사용합니다. 이것은 어떤 사물의 특징 목록으로 생각될 수 있습니다. 즉, 데이터 선언이 있고 그 데이터를 처리해 주는 Method들로 둘러싸인 아직 실제로 존재하지 않는 구조를 말합니다. (자료부분+메소드부분)

* 자료 : 객체의 구조를 기술합니다.(변수,상수로 구성)

클래스의 필드라고 부릅니다.

* 메소드 : 객체의 행위를 정의합니다.(작업의 처리 부분과 자료의 접근 형태 등을 기술하는 부분입니다.)

표준 C언어의 함수 형태입니다.

 

객체는 클래스가 실제화 된 것이므로 클래스의 인스턴스(instance)라고 부르고, 클래스는 객체를 정의하기 위한 기본이 되므로 객체를 정의하는 템플릿(template)이라고 부릅니다.

Comments