코딩 뚝딱이

Java 독학하기 1일차: 점프 투 자바 01장 자바란 무엇인가? 본문

Java

Java 독학하기 1일차: 점프 투 자바 01장 자바란 무엇인가?

Desiree 이나 2023. 11. 3. 03:45

01장 자바란 무엇인가?

이번 장에서는 자바를 간단히 소개한 뒤 설치 방법과 실행 방법을 알아보고 간단한 프로그램도 만들어 볼 것이다. 이 장의 목표는 자바로 프로그래밍하는 전체 과정을 대략 보여주는 것이다. 

01-01 자바란?

자바는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 연구원들이 개발한 객체 지향 프로그래밍 언어로 1995년에 발표되었다. 처음에는 가전제품에 탑재해 동작하는 프로그램을 만들기 위해 탄생했으나 지금은 웹과 모바일 앱 개발에서 가장 많이 사용하는 언어이다. 특히 우리나라에서 쓰이는 프로그래밍 언어 중 사용빈도가 매우 높으며, 기업에서 사용하는 프로그램의 80% 이상은 자바로 만들어졌다고 해도 과언이 아니다. 또한 오랜 시간 생태계를 구축하고 유지해 왔기 때문에, 자바를 기반으로 한 수많은 라이브러리들이 존재한다. 

 

사실 나는 파이썬 기반의 프로그래밍만 해봤는데, 위의 이유로 Java를 독학해보고자 한다. 전에 <점프 투 장고>를 이용해서 홈페이지를 만들었을때 쉽게 접근할 수 있었어서, 점프 투 자바를 기반으로 유튜브 동영상들과 다른 자료들을 함께 보면서 독학을 해볼까 한다. 

화이팅! 


01-02 자바로 무엇을 할 수 있을까?

 자바로 할 수 있는 일 

1. 웹 프로그래밍

일반적으로 MS 엣지, 크롬, 파이어폭스 같은 브라우저로 인터넷을 사용한다. 웹사이트의 게시판이나 방명록을 바로 웹 프로그램이라고 한다. 자바는 웹 프로그램 개발에 널리 사용되며, 서버 사이드(백 엔드) 개발에 특히 강점이 있다. 예를 들어 서블릿(Servlet), JSP, 스프링 프레임워크 등과 같은 기술들을 사용하여 웹 프로그램을 만들 수 있다. 

 

2. 안드로이드 애플리케이션

자바는 안드로이드 애플리케이션 개발을 할 때 사용하는 메인 언어이다. 안드로이드 스튜디오와 함께 자바를 사용하면 쉽게 모바일 앱을 개발할 수 있다.

 

3. 게임 개발

게임 개발을 위한 대표적인 자바 라이브러리로는 LWJGL이 있고, 자바 프레임워크로는 libGDX가 있다. 이들을 활용하면 멀티플랫폼 게임도 쉽게 개발할 수 있다.

 

4. 데이터베이스 처리

데이터를 저장하고 조회하기 위해서는 데이터베이스 시스템이 반드시 필요하다. 자바는 이러한 데이터베이스 시스템에 연결하여 데이터를 관리하는 데 매우 적합한 언어이다.

 

5. 빅데이터 및 분산 처리

빅데이터는 대규모의 복잡한 데이터를 의미하며, 전통적인 데이터 처리 방식으로는 분석이 어렵다. 이를 효과적으로 처리하기 위해 분산 처리 기술이 사용된다. 분산 처리는 여러 컴퓨터 또는 클러스터에서 데이터와 연산을 분산시켜 병렬 처리하는 방식이다. 자바는 하둡, 스파크와 같은 빅데이터 처리에 필요한 도구와 프레임워크를 제공한다.

 자바로 할 수 없는 일 

1. 시스템 프로그래밍

자바는 시스템 프로그래밍에 적합하지 않다. 운영체제, 드라이버, 커널 등의 Low Level 시스템 개발에는 C, C++ 같은 언어가 더 적합하다.

 

2. 높은 성능을 요구하는 프로젝트

자바는 가비지 컬렉션(Garbage Collection, GC)과 JIT(just-in-time) 컴파일러와 같은 기능 때문에 실행 속도가 다소 느릴 수 있다. 따라서 고성능이 중요한 분야에서는 C, C++, 또는 Rust와 같은 언어가 적합하다.

• 가비지 컬렉션은 프로그램에서 사용되지 않는 메모리를 자동으로 회수하는 메모리 관리 기법이다.

 JIT 컴파일러는 프로그램 실행 시점에 바이트 코드를 기계어로 변환하는 기술이다

 

3. iOS 애플리케이션 개발

자바는 안드로이드 애플리케이션 개발의 주요 언어이지만, iOS 애플리케이션 개발에 제한적이다. iOS 개발은 주로 스위프트(Swift) 또는 오브젝티브-C(Objective-C)를 사용한다. 또한, 일부 네이티브 데스크톱 애플리케이션 개발에서도 자바의 사용이 제한적일 수 있다.


01-03 자바 둘러보기

프로그래밍 언어를 배울 때 첫 번째 예제로 다루는 Hello World를 출력하는 자바 프로그램을 만들어 보자. 자바는 다른 언어와 달리 ‘Hello World’ 프로그램만 제대로 공부하면 자바 언어의 절반 이상을 익히는 것과 다름없다고 한다. 왜냐하면 Hello World를 출력하는 프로그램을 작성하려면 JDK와 IDE를 설치하는 방법과 클래스, 함수, public, static의 개념을 이해하고 실행하는 방법까지 모두 알아야 하기 때문이다. 

자바가 처음에 어렵게 느껴지는 이유는 Hello World와 같은 간단한 예제를 실행하려고 해도 어떤 것을 알아야 하고 어떤 것은 몰라도 되는지 구분하기가 힘들기 때문이다.

자바를 처음 배운다면 'Hello World' 프로그램부터 딜레마에 빠지게 된다. 가장 쉬운 것조차 클래스부터 배워야 하니 말이다.

 

처음 배우는 언어로 자바를 선택했다면 자바가 아닌  파이썬 같은 쉬운 언어를 먼저 공부하기를 추천한다. 배우기 쉬운 언어로 먼저 시작하여 프로그래밍이란 어떤 것인지, 클래스란 무엇인지 등에 대하여 알고 난 후에 자바를 공부하면 무척 쉽게 느껴질 것이다.

자바는 처음 프로그래밍을 배우는 사람이 쉽게 적응하기 어려운 언어라고 할 수 있다. 왜냐하면 이것은 언어가 추구하는 방향성 때문이기도 한데, 모든 것이 클래스 기반에서 동작해야 하는 자바의 특징이 나중에는 무척 편리하지만 처음 시작하기에는 넘기 힘든 장벽이 되기 때문이다. 

 

JDK 설치하기 

자바 코딩을 시작하기 전에 먼저 개발 환경을 구축해 보자. 개발 환경이란 프로그램을 작성할 수 있는 컴퓨팅 환경을 의미한다.

자바 프로그래밍의 필수 도구인 JDK(Java development kit)를 먼저 설치해 보자. 자바 프로그램을 만들기 위해서는 꼭 설치해야 한다. JDK는 자바 코드를 작성하는 도구, 소스를 컴파일하는 컴파일러 등으로 이루어져 있으며 온라인에서 무료로 내려받아 설치할 수 있다.

 컴파일이란 프로그래머가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 말(기계어)로 바꾸는 행위이다.

 자바는 기본적으로 무료로 사용할 수 있지만 기업용·상업용에 따라 조건이 달라질 수 있다.

 

1) JDK를 내려받을 수 있는 URL에 접속한다. 만약 URL이 유효하지 않다면 ‘검색 창’에서 JDK Download로 검색하고 들어가면 된다.

2) 다음 화면이 보인다면 다음과 같이 표시된 부분을 클릭해 내려받아 설치하면 된다. 나는 맥북 유저라 macOS로 진행했다!

 

3) 기본값으로 설정하고 설치를 모두 마치면 JDK는 아마도 다음과 비슷한 디렉터리에 설치되어 있을 것이다. 이때 C:\program files\java 이후의 디렉터리명은 JDK 버전에 따라 다를 수 있다. JDK 디렉터리는 앞으로 실습할 때 필요하니 위치를 꼭 기억해 놓자.

/Library/Java/JavaVirtualMachines/jdk-21.jdk

여기서 디렉터리란 파일이 저장되는 위치를 말한다. 폴더라고 생각하면 쉽다

 

 자바 파일과 컴파일 알아 두기 

인텔리제이(IntelliJ)를 사용하여 자바 프로그램을 작성하기 전에 한 가지 알아두어야할 것이 있다. 바로 인텔리제이를 설치하고 나면 사용할 기회조차 없는 javac와 java라는 명령어이다. JDK를 설치했다면 JDK가 설치된 디렉터리의 하위 디렉터리인 bin에 javac.exe와 java.exe 파일이 저장되어 있을 것이다.

 인텔리제이는 뒤에서 더 자세히 설명할 것이므로, 자바 프로그램 작성을 도와주는 도구라는 정도로만 알고 넘어가자.

 만약 bin 디렉터리에 java.exe만 있고 javac.exe가 없다면 JDK가 아닌 JRE를 설치한 것이므로 다시 JDK를 설치해야 한다.

 

JRE란?

JRE(Java Runtime Environment)는 JDK보다 작은 개념으로, 자바가 실행될 수 있는 최소한의 파일들이 설치되어 있는 환경이라고 생각하면 된다. JRE에는 javac.exe와 같은 자바 파일을 컴파일하기 위한 도구는 포함되지 않는다. 

 

javac는 java compiler의 줄임말이다. 즉, 자바 파일을 컴파일할 때 사용하는 것이 바로 javac.exe파일이다. 컴파일이란 프로그래머가 작성한 코드를 컴퓨터가 이해할 수 있는 말(기계어)로 바꾸는 것인데, 모든 프로그래밍 언어에는 코드를 기계어로 번역하는 프로그램인 컴파일러 또는 그와 비슷한 기능을 하는 것들이 있다. 

 

그럼 자바 파일은 무엇일까? 바로 우리가 작성해야할 자바 프로그램을 말한다. 자바 프로그램은 확장자가 .java인 파일로 저장되는데, 이때 .java파일을 자바 파일 또는 자바 소스라고 한다. 

 

만약 MyProgram.java라는 자바 파일을 작성했다면 프로그램이 정상으로 동작하는지 확인하기 위해서 프로그램을 실행하고 싶을 것이다. 자바로 작성한 파일을 실행하려면 두 단계를 거쳐야만 한다. .java파일을 .class파일로 바꿔주는 컴파일 단계와 이어서 .class파일을 실행하는 단계인다. 이렇게 두 단계를 거치면 작성한 자바 프로그램을 실행할 수 있다.

 

다음 그림을 통해 자바 프로그램을 작성하고 실행하는 과정을 좀 더 자세히 살펴보자. 이 그림에서 컴파일러는 javac.exe에, 자바 가상 머신(Java Virtural Machine, JVM)은 java.exe에 해당한다. 

점프 투 자바 01-03
자바 프로그램이 실행되는 과정

  1. 소스 코드인 MyProgram.java 파일을 작성한다. 
  2. 컴파일러(compiler)는 자바 소스 코드를 이용하여 클래스 파일인 MyProgram.class를 생성한다. 이때 MyProgram.class는 JVM이 인식할 수 있는 이진 파일(binary file)이다. 
  3. JVM은 클래스 파일의 이진 코드(binary code)를 해석하여 프로그램을 실행한다. 
  4. MyProgram의 실행 결과가 컴퓨터에 반영된다. 

자바를 컴파일하고 나면 왜 exe 파일이 아닌 class 파일이 생성될까?

C 또는 C++ 등으로 작성된 프로그램은 최종 결과물로 exe파일을 만들어 낸다. 이 exe 파일은 계산기와 같은 프로그램이거나 게임일 수도 있다. 사용자는 그냥 단순히 exe프로그램을 실행하기만 하면 프로그램을 실행할 수 있다. 그런데 자바는 왜 실행하기도 어려운 class라는 걸 만들어서 귀찮게 하는 걸까?

물론 자바도 exe 프로그램으로 만들어 낼 수는 있다. 다만 JVM이 exe에 포함되는 형식이어야 하므로 exe파일이 무척이나 커진다는 단점이 있다. 

 

C, C++와 같은 언어는 컴파일된 실행 파일을 모든 운영체제에서 사용할 수 없다. 즉, 윈도우에서 컴파일한 프로그램을 리눅스에서는 사용할 수 없다는 얘기다. 왜냐하면 자바의 JVM처럼 중간 단계 역할을 수행하는 것이 없기 때문인데, 이 부분에서 장단점이 명확하게 나우어진다. C, C++등의 언어에서 만든 실행 파일은 JVM 같은 중간 단계를 거치지 않기 때문에 속도가 빠른다. 하지만 운영체제마다 실행 파일을 따로 작성해야 한다는 단점이 있다. 반대로 자바는 JVM이라는 중간 단계가 있으므로 C, C++등의 언어보다 속도가 느리다. 하지만 한 번 작성한 클래스 파일은 어떤 운영체제에서도 사용할 수 있다는 장점이 있다. 한 번 작성한 것을 여러 곳에 재활용하는 것이 자바의 가장 큰 특징이자 장점이라고 할 수 있다. 

자바 또한 JIT(just-in-time)을 도입하는 등의 발전을 거듭하여 실행 속도도 하드웨어를 직접 제어하는 경우만 아니라면 C, C++를 따라잡았다. 

 간단한 프로그램 작성하기 

앞에서 말한 'Hello World' 프로그램을 실제로 작성해 보자. 

 

1) 먼저 명령 프롬포트 창을 열어보자. 나는 iterms를 이용하고 있어서 해당 프로그램을 이용할 예정이다!

2) 그 다음에 javac 명령어를 입력해 보자. 나는 예전에 java 환경 변수를 설정했어서 인지 점프 투 자바에서 말하는 결과는 나오지 않았다!

3) 다음처럼 javac가 성공적으로 수행된다면 PATH가 정확히 설정된 것이다. 

4) 이제 자바 파일(.java)을 작성할 차례이다. HelloWorld.java라는 이름으로 파일을 작성해 보자. 점프 투 자바 책에선 copy con 명령을 이용해서 java 파일을 작성했다. copy con을 이용한다면 파일에 더 이상 적을 내용이 없을 때 ^Z를 입력하고 엔터를 누르면 파일이 생성된다. 맥북에서는 copy con이 안되는 건지.. 안돼서 나는 vi를 이용해서 작성했다!

vi를 이용해서 작성할 때는 i를 눌러 입력모드로 전환한 후에 입력해야하고 다 작성하고 난 후엔

Esc를 눌러 입력모드를 빠져 나온 후에 ':wq'를 입력해줘야한다.

vi 파일명.확장자 vi 에디터로 파일 작성하기
i 입력모드
Esc 입력모드 종료
:wq 작성 후 종료 (w - 작성, q - 종료)
cat 파일 읽기

5) 다음과 같이 입력해 자바 파일을 컴파일해 보자. 아무런 반응 없이 프로그램이 종료될 것이다.

6) 이번에는 dir 명령어로 class 파일이 생성되었는지 확인해보자. HelloWorld.class 파일이 생성된 것을 확인할 수 있다.

나는 ls와 grep을 이용해 파일을 검색했다 ㅎ

ls: 현재 디렉토리 파일 리스트 보기, grep은 검색같은 것이다. grep 뒤에 검색하고자 하는 단어를 입력하면 해당 단어가 포함된 모든 파일 리스트가 보인다. 

7) 클래스 파일에는 어떤 내용이 있을까? 파일 내용을 확인할 수 있는 시스템 명령어인 type 명령어로 파일 내용을 확인해보자. 

나는 cat 명령어를 이용해 확인했다.

이처럼 화면에는 위와 같이 깨진 문자들이 표시되었다. .class파일은 JVM만 해석할 수 있는 이진 코드이므로 파일 내용을 우리 눈으로 보고 해석할 수는 없다. 

 

8) 이번에는 생성한 클래스 파일을 실행해 보자. 클래스를 실행하는 명령어는 java.exe이다. 명령 창에서 명령어를 실행해 보자. 클래스 파일은 이처럼 'java 클래스 파일명'(여기서는 java HelloWorld)과 같이 실행한다. 단, 클래스 파일명에서 .class 확장자 부분은 제외하고 이름만 입력하여 실행해야 한다. 

오류 메세지는 때에 따라 영문으로 나타나기도 하는데 내용은 같다. 

오류: HelloWorld 클래스에서 기본 메서드를 찾을 수 없습니다. 다음 형식으로 기본메서드를 정의하십시오. public static void main(String[] args) 또는 JavaFX 응용 프로그램 클래스는 javafx.application.Application을(를) 확장해야 합니다.

 

비록 오류는 발생했지만 우리는 첫 번째 자바 프로그램을 만들고 실행해 보았다! 

 

 인텔리제이 설치하기 

JDK를 설치했다면 이번에는 자바 프로그램 작성을 도와주는 도구인 인텔리제이 IntelliJ를 설치해 보자. 문서 작성을 도와주는 도구로 MS 워드나 한글이 있는 것처럼 프로그래밍 언어로 프로그램을 작성할 때에도 도와주는 도구들이 있다. 이러한 도구를 IDE(Ingergrated Development Environment) 또는 통합 개발 환경이라고 한다. 자바 프로그래밍을 도와주는 IDE 중에서 가장 많이 추천하는 도구가 바로 인텔리제이이다. 

자바 IDE로 이클립스도 많이 사용하지만 이 책에서는 인텔리제이를 사용한다. 

 

앞서 명령 프롬포트에서 발생한 오류는 프로그램을 실행하는 main 메서드가 없기 때문이다. 이 오류를 해결하려면 HelloWorld.java 파일을 수정해야 한다. 이 파일은 노트패드와 같은 에디터로 쉽게 수정할 수 있지만 여기에서는 자바의 편집 도구인 인텔리제이를 이용해 보자. 

 

1) 다음 URL에 접속해 인텔리제이를 내려받자. Ultimate와 Community 버전이 있는데 무료인 Community 버전을 선택해서 설치하자.

설치하기 어려운 과정은 없다. 디폴트(기본값)로 설정한 대로 진행하면 된다. 

동의를 구하는 팝업 창에서는 '동의'를 하고 설치를 계속 진행한다. 데이터 공유에 관한 팝업창에서는 내용을 읽어보고 원하는 항목을 선택하면 된다. 

 

2) Community 버전을 모두 설치했다면 인텔리제이를 실행해 보자. 다음 창이 나타나면 [New Project]를 클릭하자.

 

3) [Name]에 jump2java를 입력하고 [Location]에는 jump2java 프로젝트를 저장할 디렉터리를 선택하여 입력하자. [Language] [Java]를 선택한 뒤, 마지막으로 [Create] 버튼을 클릭하자.

4) 다음과 같이 jump2java라는 이름의 자바 프로젝트가 시작된다. 화면 왼쪽에 src 폴더가 보일 것이다. src 폴더에는 .java 파일들이 저장된다.

 jump2java.iml은 현재 프로젝트의 환경값을 저장하는 인텔리제이의 설정 파일이다.

 인텔리제이를 처음 실행하면 src 폴더에 Main.java 파일이 생성될 수도 있다. 사실 이 파일은 필요 없으므로 선택한 뒤, 마우스 오른쪽 버튼을 눌러 Delete를 클릭해 삭제하자.

5) 이제 HelloWorld.java 파일을 생성해 보자. 먼저 src를 선택하여 마우스 오른쪽 버튼을 누르고, [New → Java Class] 순서로 클릭해 보자.

6) 신규 클래스를 생성할 수 있는 화면이 나타나면 [Name]에 HelloWorld를 입력하고 Enter 키를 누르자. 

그러면 다음 내용의 HelloWorld.java 파일이 생성되는 것을 확인할 수 있다.

class 앞에 사용한 public 키워드는 자바 프로그래밍할 때 사용하는 접근 제어자인데, class명 앞에 사용하면 조금 다른 의미로 쓰인다. HelloWorld.java라는 이름으로 자바 파일을 작성하면 파일은 하나이지만 그 안에 클래스를 여러 개 작성할 수 있다. 다만 클래스명과 파일명이 같으면 그 class 앞에 public을 붙여 주어야 한다는 관례적인 규칙이 있다. 

HelloWorld.java의 파일명과 HelloWorld 클래스의 이름은 같기 때문에 public이 붙었다.

 

 main 메서드 이해하기 

앞에서 작성한 HelloWorld 클래스를 실행해 보자. HelloWorld 클래스를 실행하려면 main 메서드를 작성해야 한다. 어떤 프로그램이든지 시작과 끝이 있는데 이것을 관리하는 것이 바로 main 메서드이다. 

 

HelloWorld.java 파일에 main 메서드를 추가해 보자. 

메서드는 함수와 동일한 개념이다. 다만 클래스 내의 함수는 보통 메서드라고 한다. 즉, 자바는 모든 것이 클래스 기반이므로 자바에서 사용하는 함수는 모두 메서드이다.

 

public class HelloWorld{
	public static void main(String[] args) {
    	System.out.println("Hello World");
    }
}

 

아직 배우지 않은 public, static, void, String[], args, System.out.println 등이 등장했다. 일단 가볍게 알아보자.

  • public: 메서드의 접근 제어자로, 누구나 이 메서드에 접근할 수 있다는 의미이다.
  • static: 메서드에 static이 지정되어 있으면 이 메서드는 인스턴스를 생성하지 않아도 실행할 수 있다는 것을 의미한다. 
  • void: 메서드의 리턴값이 없음을 의미한다(void는 '텅 빈'을 의미한다).
  • String[]: String은 문자열을 나타내는 자바의 자료형이다([]는 값이 여러개로 이루어진 배열이라는 것을 의미한다).
  • args: String[] 자료형의 변수명이다.
  • System.out.pringln: 표준 출력으로 데이터를 보내는 자바의 내장 메서드로 문자열을 화면에 출력한다.

이제 자바의 HelloWorld 프로그램을 설명하기가 얼마나 힘든지 이해할 수 있을 것이다. public, static, void 등을 다루려면 시간이 많이 걸릴 뿐 아니라 자세히 설명할 수도 없다. public, static 등을 설명하려면 인스턴스, 객체를 먼저 이해하고 있어야 하기 때문이다. 

 

하지만 이번 장에서는 일단 무시하고 넘어가자! 다만 main 메서드는 프로그램을 실행하려면 반드시 필요하며 앞에서 보여 준 형태만 가능하다는 점을 기억하자. 자바의 규칙이라고 생각하면 된다. 

 

앞에서 main 메서드를 준비했으므로 이제 프로그램을 실행할 수 있다. [Run → Run → HelloWorld] 순서로 선택하여 프로그램을 실행하자.

 

실행 결과는 인텔리제이 하단의 콘솔 창에 다음과 같이 표시된다.

인텔리제이에서 작성한 자바 파일을 Run 명령으로 실행하면 .class 파일을 만드는 컴파일 과정(javac.exe)과 실행 과정(java.exe)이 자동으로 진행된다. 

 

드디어 우리의 최종 목적인 Hello World를 출력하는 프로그램을 만들었다!!!!!

 


01-04 자바의 8가지 특징

다음은 자바를 정의하는 단어이다. 이 가운데 자바의 8가지 중요한 특징을 살펴보자. 

A simple, object-oriented, distributed, interpreted, robust, secured, architecture neutral, portable, high-performance, platform independent, multi-threaded, and dynamic language

 

 간단하다(Simple) 

자바는 C++에 가깝지만 훨씬 간단하다. 자바는 고급 언어에 들어있는 여러 요소 중에서 불필요하다고 판단되는 것을 모두 제거했다.

 객체 지향적이다(Object-oriented) 

자바는 숫자(int, float, long 등)나 논릿값(true, false)를 제외하면 거의 모두 객체로 구성된다. 실제로 자바는 Object 클래스에서 모든 클래스를 파생한다.

자바에서는 int, float, long, true, false 등을 원시 자료형이라고 한다.

 인터프리터 언어이다(Interpreted) 

자바는 정확하게 말하면 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 먼저 텍스트 소스를 컴파일하여 이진 파일(클래스 파일)로 만든 다음, 자바 런타임이 이 클래스 파일을 인터프리트(interpret)하면서 실행한다. 자바는 먼저 시스템과 무관한 이진 파일을 만듦으로써 컴파일 언어에 가까운 속도와 함꼐 시스템의 독립성을 얻을 수 있었다. 

인터프리터 언어는 코드를 한 줄씩 작성하고 실행하여 결과를 바로 확인할 수 있다.

 강력하다(Robust) 

자바는 포인터 연산을 지원하지 않는다. 이는 잘못된 주소를 가리킬 가능성을 사전에 없앤 것이다. 자바는 모든 메모리 접근을 자바 시스템이 관리하고 제한하며, 또한 예외 처리까지 하므로 시스템이 붕괴될 우려가 없다. 예를 들어 자바는 리소스 관리(garbage collection)를 하는데 사용이 끝난 리소스를 시스템이 메모리에서 삭제하는 방식을 채택하고 있어 프로그래머가 메모리 유출을 걱정할 필요가 없다. 

포인터 연산은 C 또는 C++와 같은 언어에서 메모리 주소를 조작하는 연산으로 배열이나 구조체 멤버에 접근할때 사용한다.

 안전하다(Secured) 

자바는 프로그램을 작성할 때 자료형 타입에 매우 민감하다. 이것은 마치 코딩할 때 잔소리꾼이 끊임없이 따라다니며 잘못된 코드를 작성하지 않게 지적하는 것과 같다. 그래서 자바는 일단 컴파일만 되면 실행할 때 오류 발생률이 다른 언어에 비해 현저히 낮다. 파이썬과 같은 동적 언어에 익숙한 프로그래머라면 자바의 고지식한 면을 싫어할 수도 있다. 하지만 자바의 이런 족쇄같은 자료형 체크는 코드를 매우 명확하게 만들어 준다.

 플랫폼이 독립적이다(Platform Independent) 

자바의 실행 파일은 이진 코드(클래스)이므로 자바 런타임을 설치한 시스템에서는 어디서나 실행할 수 있다. 특, 자바로 작성한 프로그램이라면 운영체제와 상관없이 어디서든 실행할 수 있다는 뜻이다. 왜냐하면 자바 프로그램은 가상 머신으로 실행되기 때문이다. 처음에는 이 방식이 느리고 부담스러웠지만, 지금은 하드웨어의 눈부신 발전과 여러 기술이 개발되면서 이런한 단점은 대부분 사라져 버렸다.

 멀티 스레드를 지원한다(Multithreaded) 

멀티 스레드를 지원하면 프로그램 단위가 같은 스레드를 동시에 수행할 수 있다. 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되었으므로 멀티 CPU 시스템에서 효율이 높다. 

 동적이다(Dynamic) 

자바 인터페이스를 이용하면 모듈을 갱신할 때 다른 모듈까지 모두 갱신할 필요가 없다. 인터페이스가 인스턴스 변수와 도구의 실행문을 모두 배제한 채 객체 간의 상호 작용을 정의하기 때문이다. 

인스턴스와 객체는 05-02절에서 자세히 설명한다.

 


 

1장은 여기서 끝 !! 

2장은 다음 게시물에서 만나요!!