1. 간단 용어 정리
데이터
데이터 타입(자료형)
- 데이터의 유형
- ex. 정수 / 문자 / 부동소수(소숫점)
자료구조
- 데이터 여러개를 분류해서 담을 수 있는 분류통
문맥
- 문맥이라 함은 개발언어로 표현한 프로그램의 동작 흐름
- ex. 이케아 가구 조립 설명서, 밀키트 요리 레시피에 조건에 따른 문맥
-> 이 처럼 프로그램도 문맥을 가지고 있다.
메서드
공통 실행환경
- 여러 기기의 운영환경에서 실행 할 수 있도록 판을 깔아주는 실행환경
운영 체제
- 기기가 프로그램을 실행시키는 운영환경
- ex. Window, Android, iOS, Linux …
2. 특징
1) 운영체제에 독립적
-
기존의 다른 언어와는 달리, 다른 종류의 운영체제(OS)에 적용할 노력이 필요없다는 것이다.
-
이는 자바가상먼신(JVM)
덕분이다.
자바 응용프로그램은 JVM과만 통신하는데,
자바 응용프로그램이 내린 명령을 JVM이 해당 운영체제가 이해할 수 있도록 변환/전달한다.
-
서로 다른 버전의 JVM이 제공됨
- 자바로 작성된 프로그램은 운영체제에는 독립적이나,
JVM이 운영체제에 종속적이기 때문
참고: Java 실행 과정 (컴파일러, 바이트 코드, JVM )
2) 객체 지향 언어
3) 배우기에 쉬움
일반적으로 객체지향언어는 배우기가 어려웠으나,
그 중에서도 Java는 상대적 객체지향개념을 쉽게 활용할 수 있다.
4) 자동 메모리 관리
자바로 작성된 프로그램이 실행되면,
가비지컬렉터(Garbage Collection) 가 자동적으로 메모리 관리를 해주므로, 프로그래머는 따로 메모리 관리가 필요 X
5) 네트워크와 분산처리를 지원
다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해, 비교적 짧은 시간에 개발 가능
6) 멀티쓰레드를 지원
일반적으로 운영체제에 따라 멀티쓰레드의 지원은 구현방법이 달라지지만,
Java에서 개발되는 멀티쓰레드 프로그램의 경우
- 시스템과는 관계없이 구현 가능
- 관련 라이브러리(Java API)가 제공되므로, 구현 쉬움
- 자바 인터프리터가 여러 쓰레드에 대한 스케줄링을 담당
7) 동적 로딩을 지원
- 실행 시,
모든 클래스를 로딩하지 않아도 된다.
- 일부 클래스가 변경돼도,
전체 애플리케이션을 컴파일하지 않아도 된다.
- 애플리케이션 수정 시, 적은 작업만으로도 가능하다.
8) 보안성
- Java는 안정성이 높아서, 프로그래밍 오류를 방지하고 보안상 안전하다.
- Java 언어로 작성된 문맥을 바이트 코드로 변환하는 변환기(Compiler)가 먼저 오류를 체크
- 그 외에도 Java 에서 지원하는 보안 기술 多
9) 대규모 앱 개발
- 네트워크 및 데이터베이스 연결 및 통신 등의 작업을 처리하는 API를 제공하여, 대규모 앱 개발이 가능하다.