카테고리 없음

자바 프로그래밍 언어

흰색텀블러 2024. 7. 13. 15:52

JAVA

- 객체 지향적 프로그래밍 언어로, 1995년에 발표됨.

- 웹 앱 개발에 가장 많이 사용함.

- 재사용성의 장점을 가지고 있음.

- 플랫폼에 독립적인 특성을 가지고 있음. (OS에 다시 컴파일할 필요가 없음)

- 메모리 관리를 쓰레기 수집기(Garbage Collector)가 자동 수행

 

특징

1. 단순성

- 포인터 연산(메모리상 임의의 주소에 엑세스 할수 있는 기능)이 없다. - 시스템에 있는 메모리의 값을 읽어내는 등의 시스템의 안전을 해칠 수 있기 때문에! 

 

- 구조체(struct)를 사용하지 않는다. - 구조체는 그 자체가 클래스로 구현될 수 있기 때문에!

 

- 타입선언(typedef)를 사용하지 않는다. - 새로운데이터형으로 선언하기 위한 것인데, 클래스가 타입의 의미를 가지므로 타입선언 사용하지 않는다!

 

- 전처리를 사용하지 않는다. -  C언어에서 #define문은 상수를 선언 및 간단한 문장으로 치환해 주는 역할을 하지만, 데이터 타입에 대한 검사가 안되기 때문에!

 

- 다중 상속을 허용하지 않는다 - 대신, 인터페이스라는 개념으로 지원하고 있다.

 

- String 클래스를 제공한다. - String, StringBuffer 클래스를 제공한다.

 

- 메모리 할당과 회수 시스템을 제공한다. - 임의의 위치에 변수 선언이 가능하며, 더이상 사용안하는 메모리는 GC가 자동으로 사용을 해제시킨다.

 

- 예외처리 기능을 제공한다.

 

2. Object-Oriented(객체지향)

- 자바 언어는 객체지향의 개념에 충실하게 만들어졌기 때문에, 인터페이스를 명확히 정의하며 재사용 가능한 코드를 만들 수 있다.

 

3. Network-Savvy(네트워크 기반)

- HTTP와 FTP등의 TCP/IP 프로토콜을 처리하는 라이브러리를 제공하기 때문에, 네트워크 프로그래밍을 쉽게 작성 할 수 있다. 특히, URL을 이용하면 자바 응용프로그램이 자신의 로컬 파일 시스템을 액세스하는 것과 동일한 방식으로 네트워크에 있는 객체를 열어서 액세스할 수 있다.

 

4. Robust(견고하다)

- 견고함이란, 프로그램에 버그가 있어도 쉽게 문제를 유발하지 않으며, 정확한 결과를 산출한다는 뜻이다. 즉, 견고한 SW 구축을 추구하는 언어들은 프로그래머가 소스 코드를 작성할때, 더 많은 제약을 둔다.

 

- 예를 들어, 자바는 캐스트(cast) 연산자를 이용하여 명시적으로(explicit)로 형 변환을 하지 않으면 컴파일 에러를 발생시킨다. 또한, 데이터범위를 벗어나면 자바는 에러처리를 한다.

 

5. Secure(안전하다)

- 분산 네트워크 환경에서 사용되는 것을 전제로 만들어졌으며, 데이터에 대한 엑세스를 제한하기 위해 PK 암호화 기법을 포함했으며, 불법적 메모리 액세스를 방지하기 위해 포인터 연산을 제공하지 않는다.

 

6. Architecutre Neutral(아키텍처로부터 독립)

- 자바는 어떤 플랫폼에서도 실행될 수 있도록, 컴파일 시 이진 코드 대신 바이트 코드(byte code)를 생성한다. 따라서, 네트워크에 연결된 다양한 종류의 플랫폼을 모두 수용하는 앱 프로그램을 구현할 수 있다.

 

7. Portable(이식성)

- 아키텍처 중립적이라는 말은 이식성을 가지고 있다는 것으로, 이식성이 높으면 서로 다른 HW가 수치 연산을 해석하는 방식에서 문제가 있을 수 있다.

 

- 자바는 모든 플랫폼에 동일한 바이트 코드를 생성하기 때문에, 수치 연산을 단순화 하여 정수형인 int는 부호를 사용한 2의 보수인 32비트, 실수인 float는 IEEE754 표준에 정의한 32비트 부동 소수점을 사용한다.

 

8.  High Performance(고성능)

- 자바를 컴파일할때 바이트 코드를 특정 HW 플랫폼을 위한 기계어 코드로 바꾸는 옵션이 포함되어 있어, 컴파일 언어와(C, C++)와 동일한 속도로 처리한다.

 

9. Multithreaded(다중 쓰레드)

- 하나의 쓰레드가 다른 여러 개의 쓰레드를 생성하여 데이터를 공유하면서 개별적인 작업을 수행할 수 있도록 하는 다중 쓰레드를 지원한다.

 

- 쓰레드란, 하나의 커다란 프로세스 내에서 독립적으로 수행 가능한 작은 프로세스로, 다중 사용자를 위한 프로그램을 개발할 때 서버의 부담을 경감시키는 효율적인 프로그램의 개발이 가능하다.

 

10.  Dynamic(동적 결합)

- 자바는 종속적인 객체에 영향을 미치지 않으면서 부모 클래스의 메소드나 변수를 수정, 추가할 수 있다.