본문 바로가기
  • 1+1=3
개발삽질/SSAFY하는 동안 기록

[SWEA] 자바 초급(1) - 1차시: 자바언어 특징, 플랫폼 구조

by 여스 2021. 12. 28.
반응형

자바 언어의 특징

1. 단순하다

- c와 c++의 복잡한 기능을 제외하였음(c++의 전위처리, 포인터사용, 다중상속, 구조체, goto문 사용, 연산자 중복기능 등 제외)

- 가비지 컬렉터에 의한 자동메모리 관리로 할당된 메모리 해제를 신경쓰지 않아도 됨.

결국 c와 c++에 비해 작고 간편해짐

 

2. 객체지향적이다.

-객체지향 언어인 c++을 기초로 만들어진 언어이기 때문임.

- 재사용성을 높임

 

3. 분산처리에 용이하다.

- 분산환경에서 tcp/ip 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어이다.

이는 자바가 tcp/ip 네트워크 기능을 내장하고 있고, http, ftp등과 같은 프로토콜을 쉽게 사용할 수 있도록 라이브러리를 제공하기 때문임.

- 서로 다른 컴퓨터 상의 객체들도 원격을 호출할 수 있는 원격메소드 호출 관련 RMI(Remote Method Invoation)기능의 라이브러리를 제공

 

4. 인터프리터에 의해 실행된다.

소스코드(.java) -> 컴파일(Compiling: javac) -> 중간코드(.class) = 바이트코드 = 클래스파일 -> 기계어로 해석(Interpreting: java) -> 실행

 

즉, 자바는 컴파일 언어인 동시에 인터프리터 언어이다.

 

5. 자바는 견고하다(Robust)

- 다양한 플랫폼(윈도우즈, 리눅스, 맥) 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결

- 포인터를 사용하지 않음

- 자동으로 가비지 컬렉션 기능을 수행함

- 엄격한 데이터의 타입 검사를 통해 에러를 조기에 발견함

- 실행시간에 발생하는 에러를 처리함

 

6. 자바는 안전하다

컴파일 시에 엄격하게 데이터 타입을 검사함으로써 프로그램 실행 시 발생할 수 있는 비정상적인 상황을 미리 방지

 

실행시에 클래스파일은 인터프리터에 의해 적재되는데 클래스로더에 의해 코드가 자신의 컴퓨터에서 온것인지 다른곳에서 온것인지 분리를 하고, 바이트코드로 검증하고 문제가 없으면 인터프리터에 의해 코드가 실행된다. 이처럼 클래스로더와 바이트코드 검증기는 코드의 보안성을 높인다.

 

7. 자바는 플랫폼 독립적이다

사용하는 운영체제나 cpu 등 하드웨어 사양에 관계없이 실행될 수 있음

컴파일러에 의해 바이트코드로 변환된 클래스파일이 자바가상머신에 의해 기계어로 번역되어 실행되기 때문임.

 

8. 자바는 높은 성능을 제공함

가비지 컬렉션 기능이 추가되어 자동으로 메모리 관리

메모리가 할당된 객체의 상태를 추적관리하는데, 더이상 참조되지 않으면 자동으로 할당된 메모리를 해제함. 즉 불필요한 메모리 낭비를 방지함.

 

 

9. 자바는 멀티스레드를 지원함

스레드란 독자적으로 수행하는 하나의 작은 프로그램을 말한다.

멀테스레드는 한번에 여러개의 스레드가 동시해 수행하는 것인데, 하나의 cpu가 여러개의 프로그램을 동시에 수행하도록 함. 멀티스레드는 수행속도를 빠르게 함.

 

 

10. 자바는 동적이다.

기존의 프로그램에 영향주지 않고, 라이브러리에 새로운 메서드나 속성추가 가능하다

프로그램과 라이브러리의 연결을 실행시간에 수행하여 라이브러리 변화를 곧바로 적용가능.

 

 

자바 플랫폼

- Java SE(Standard Edition)

가장 기본이 되는 에디션으로써, 자바언어 대부분의 패키지가 포함되어있음

 

- Java EE(Enterprise Edition)

현업에서 사용되는 API들이 집약된 에디션

ex) JSP, Servlet, JDBC 등등

 

- Java ME(Micro Edition)

이건 모바일기기 관련 api 포함된 건데, 지금은 거의 사장됨

 

자바 플랫폼 구조

일반적인 앱은 운영체제 위에서 동작함. 운영체제는 앱과 하드웨어간의 통신을 담당함.

그.러.나 자바 프로그램은 자바가상머신(jvm)에서 동작함. 또한 jvm은 표쥰 api라이브러리가 제공됨. 

 

 

자바 API

자바 api는 기본적인 클래스들을 거대한 라이브러리로 미리 만들어서 제공하는 것을 말함. 

이렇게 미리 제공되는 클래스를 표준 클래스라고 함. 

 

JDK

- jdk폴더 구조

bin폴더: 자바개발 관련 각종 명령들 포함. 자바 컴파일러와 인터프리터 명령도 여기에 포함됨

include폴더: 플랫폼 별로 필요한 jdk의 각종 헤더파일들 포함

jre폴더: 자바 실행환경 관련 명령어와 라이브러리를 포함한 폴더

lib 폴더: 자바 개발환경에서 사용될 라이브러리 포함

 

bin폴더에 있는 주요 명령어

 

jdk document

자바 api는 소스형태가 아니라 바이트코드로 제공되는데, 이를 사용하기 위해서는 관련 정보가 필요함. 이것이 jdk document임.

 

반응형

댓글