카테고리 없음

이것이 자바다 신용권의 Java 프로그래밍 정복 - 1장

wlsdnr143 2022. 8. 3. 19:57


1장

* 해당 글은  "이것이 자바다 신용권의 Java 프로그래밍 정복"을 기반으로 작성하였으며

                                            책의 모든 목차를 다루는 것은 아니기에 내용중에 목차에서 빠진 부분도 있다는점 참고바랍니다.




1장 목차

  • 1.1 프로그래밍 언어란?
  • 1.2 자바란?
  • 1.3 자바 개발 환경 구축
  • 1.4 자바 프로그램 개발 순서
  • 1.5 주석과 실행문
  • 1.6 이클립스 설치
  • 1.7 풀인원 설치와 실행

 


1.1 프로그래밍 언어란?

 

컴퓨터가 이해할 수 있는 언어는 " 기계어 "이다.

기계어는 0과 1로 이루어진 이진코드이기 때문에 사람이 이해하기 어렵다.

그래서 사람과 컴퓨터가 대화하기 위해서 다리 역할을 하는 프로그래밍 언어가 필요한 것이다.

 

일반적으로 프로그래밍 언어라고 하면 자바, 파이썬 , C와 같은 고급언어를 의미하며 

이 언어들로 작성된 내용을 " 소스(source) "라고 부른다.

즉, 우리가 흔히 말하는 소스코드를 의미한다.

 

아까 말했듯이 컴퓨터가 이해할 수 있는 언어는 0과 1로 이루어진 기계어이기때문에 

우리가 작성한 소스는 컴퓨터가 이해하지못한다.

따라서 소스를 기계어로 변하게 해주는 무언가가 필요한데

변하게해주는 무언가가 바로 " 컴파일러(compiler) " 라는 소프트웨어이다.

 

우리가 말하는 " 프로그램 " 이란 컴퓨터에서 특정 목적을 수행하기 위해 

프로그래밍 언어로 작성된 소스를 기계어로 번역한 것을 의미한다.


1.2 자바란?

 

1.2.1 자바 소개

 

" 자바(Java) "라는 언어는 1995년도에 썬 마이크로시스템즈에서 발표했다고한다.

1995년부터 1999년까지는 윈도우 프로그램 개발이 주류였기때문에 C++언어에 비해 자바는 열세였다고한다.

이유는 자바는 메모리 및 CPU를 많이 사용하기때문에 윈도우 프로그래밍 언어로는 부적합하기때문이다.

 

하지만 1999년도 부터 인터넷이 활성화되면서 웹 애플리케이션 구축용 언어로 자바가 급부상했다고 한다.

이유는 기업체 및 공공기관의 다양한 서버 운영체제에서 단 한 번의 작성으로 모든 곳에서 실행 가능한 언어는 자바뿐이었기 때문이다. 


1.2.2 자바의 특징

 

  • 이식성이 높은 언어

여기서 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.

원래라면 MS윈도우에서 실행되는 프로그램들은 MS 윈도우 환경에 최적화되어있기때문에 유닉스나 리눅스에서 실행하려면 소스파일을 수정도해야하고 재컴파일도 해야하는데 자바는 자바 실행 환경인 " JRE(Java Runtime Environment) " 만 설치되어있으면 모든 운영체제에서 실행이 가능하다.

 

  • 객체 지향 언어 

자바는 파이썬과 마찬가지고 객체 지향 언어로 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.

 

  • 함수적 스타일 코딩을 지원

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

 

  • 다양한 애플리케이션 개발 가능

자바는 단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다고 한다.

 

  • 멀티 스레드를 쉽게 구현 가능

자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.

 

  • 동적 로딩(Dynamic Loading)을 지원

자바 애플리케이션은 여러 개의 객체가 서로 연결되는데 애플리케이션이 실행 될 때 모든 객체가 생성되는 것이 아니라 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 그래서 수정해야할 일이 있더라도 수정할 클래스만 수정하면 되기에 전체를 다시 컴파일 필요가 없다는면에서 유지보수에 용이하다.

 

  • 오픈소스 라이브러리가 풍부

말 그대로 오픈 소스가 넘쳐난다.

 

 


1.2.3 자바 가상 기계

자바 프로그램은 완전한 기계어가 아니라 바이트 코드이기 때문에 운영체제는 자바 프로그램을 바로 실행할 수 없다.

그래서 이 바이트 코드를 기계어로 변환시켜주기 위해 " JVM (Java Virutal Machine)이라는 자바 가상 기계가 필요하다.

 

운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에

여러 운영체제에서 동일한 실행 결과를 만들어 낼 수 있도록 운영체제 별로 JVM을 만들었다.

따라서 JVM을 설치할때에는 자신이 사용하는 운영체제에 맞게 다운받아야한다.

 

 

 

자바 프로그램 실행 단계

위 사진을 통해 자바 프로그램 실행 단계를 설명해보려한다.

우선 .java라는 확장자를 가진 파일에 고급언어로 소스를 작성한다. ( 작성된 파일을 소스파일이라 부른다. )

이 소스 파일을 컴파일러로 컴파일하면 확장자가 .class인 바이트 코드 파일이 생성된다.

이 바이트 코드 파일은 JVM 구동 명령어에 의해 JVM에서 해석되고 해당 운영 체제에 맞게 기계어로 번역된다.

이처럼 바이트 코드는 하나지만, JVM에 의해서 번역되는 기계어는 운영체제에 따라서 달라진다.

 

즉, 바이트 코드는 모든 JVM에서 동일한 실행 결과를 보장하지만, JVM은 운영체제에 종속적이다.

 

위와 같은 과정으로 인해 한번 작성하면 어디서든 실행된다는 장점이 있지만 반대로 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않기에 C나 C++처럼 컴파일 단계에서 바로 완전한 기계어로 변환되는 언어보다 속도가 느리다는 단점이 있다. 그러나 기계어로 빠르게 변환해주는 JVM 내부의 최적화된 " JIT (Just In Time) " 컴파일러를 통해서 속도의 격차가 줄어들고 있다고 한다.


1.3 자바 개발 환경 구축

1.3.1 자바 개발 도구 (JDK) 설치

자바 프로그램을 개발하기 위해서는 Java SE의 구현체인 " JDK(Java Development Kit) "를 설치해야한다.

 

여기서 " Java SE(Standard Edition) "란 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다.

추가적으로 " Java EE(Enterprise Edition) "이라는 것도 있는데 이것은 분산환경(인터넷, 네트워크) 에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다.

 

JRE = JVM + 표준 클래스 라이브러리 ( 개발된 프로그램 실행만 할 수 있음 )

JDK = JRE + 개발에 필요한 도구


1.3.2 API 도큐먼트

자바 프로그램을 개발하기 위해서는 JDK에서 제공하는 표준클래스 라이브러리를 반드시 이용해야하는데 앞서 말했듯이 API 들이 매우 방대하기때문에 쉽게 찾을 수 있도록 API Document를 제공한다.

 

https://docs.oracle.com/javase/8/docs/api

 

Java Platform SE 8

 

docs.oracle.com