01. 자바 시작하기

The Great Gatsjy·2021년 2월 11일
0

이것이 자바다

목록 보기
1/2

1.1 프로그래밍 언어란?

  • 사람과 컴퓨터가 대화하기 위해서는 사람의 언어와 기계어의 다리 역할을 하는 프로그래밍 언어가 필요하다.
  • 고급 언어란 컴퓨터와 대화할 수 있도록 만든 언어 중에서 사람이 쉽게 이해할 수 있는 언어를 말한다.
  • 고급 언어로 작성된 소스는 컴퓨터가 바로 이해할 수 없기 때문에 컴파일이라는 과정을 통해서 컴퓨터가 이해할 수 있는 0과 1로 이루어진 기계어로 변환 후 컴퓨터가 사용하게 된다.
  • 반대로 저급 언어란 기계어에 가까운 언어를 말하는데, 대표적으로 어셈블리어가 저급 언어에 속한다.
  • 고급언어들로 작성된 내용을 소스라고 부르고, 이 소스는 컴파일러라는 소프트웨어이 의해 기계어로 변환된 후 컴퓨터에서 실행할 수 있게 된다.

1.2 자바란?

1.2.1 자바의 특징

이식성이 높은 언어이다

  • 이식성이란 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
  • 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제에서 실행 가능하다.

객체 지향 언어이다.

  • 프로그램 개발 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍이라고 한다.
  • 객체를 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용한다.
  • 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속화, 다형성 기능을 완벽하게 지원하고 있다.

함수적 스타일 코딩을 지원한다.

  • 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해 진다.

메모리를 자동으로 관리한다.

  • 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되어있으며, 메모리는 자바가 직접 관리한다. 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.

다양한 어플리케이션을 개발할 수 있다.

  • 자바는 다양한 운영체제에서 이용할수 있는 개발도구와 API를 묶어 에디션 혈태로 정의하고 있다.

Jave SE(Standard Edition) - 기본 에디션

  • Java SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM : Java Virtual Machine)를 비롯해서 자바 프로그램 개발에 필수적은 도구와 라이브러리 API를 정의한다. 클라이언트와 서버 프로그램에 상관 없이 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java SE의 구현체인 자바 개발 키트(JDK:Java Development Kit)를 설치해야 한다.

Java EE(Enterprise Edition) - 서버용 어플리케이션 개발 에디션

  • Java EE는 분산 환경(네트워크, 인터넷)에서 서버용 어플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 어플리케이션, 분산 처리 컴포넌트인 EJB(Enterprise Java Bean) 그리고 XML 웹 서비스(Web Service) 등이 있다.

멀티스레드(Multi-Thread)를 쉽게 구현할 수 있다.

  • 하나의 프로그램이 동시에 여러가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬처리하려면 멀티스레드 프로그래밍이 필요하다.
  • 프로그램이 실행되는 운영체제에 따라서 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어에 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.

동적로딩(Dynamic Loading)을 지원한다.

  • 자바어플리케이션은 여러개의 객체가 서로 연결되어 실행하는데, 이 객체들은 클래스로부터 생성된다. 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적으로 로딩해서 객체를 생성한다. 또한 개발 완료 후 유지보수(수정)가 발생하더라도 해당 클래스만 수정하면 되므로 전체 어플리케이션을 다시 컴파일 할 필요가 없다.

막강한 오픈소스 라이브러리가 풍부하다.

  • 자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용한느 라이브러리 또한 오픈소스가 넘쳐난다.

1.2.2 자바 가상 기계(JVM)

  • 운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다.
  • 이것이 자바 가상기계 (JVM:Java Virtual Machine)이다. JVM은 실 운영체제를 대신 해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다.
  • 영어권에서는 컴퓨터를 흔히 기계(Machine)이라고 하기 때문에 '자바를 실행시키는 가상의 기계'라고 해서 'JVM'이라는 용어가 나오게 된 것이다.
  • 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다. 자바 프로그램을 운영체제가 이해난 기계어로 변역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 한다.
  • 자바 프로그램은 확장자가 .java인 파일을 작성하는 것부터 시작된다. 이것을 소스파일이라고 하는데, 이 소스파일을 컴파일러로(javac.exe)로 컴파일하면 .class인 바이트 코드 파일이 생성된다. 바이트 코드 파일은 JVM 구동 명령이(java.exe)에 JVM에서 해석되고 해당운영체제에 맞게 기계어로 번역된다. 바이트 코드는 하나지만, JVM에 의해서 번역되는 기계어는 운영체제에 따라서 달라진다.
  • 자바소스파일(.java) -> (컴파일러:javac.exe) -> 바이트 코드 파일(.class) -> (자바가상기계:java.exe) -> 기계어 -> 실행
profile
Overcome and move on to the next stage.

0개의 댓글