ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바의 정석 Chapter 1 - 자바를 시작하기 전에.... [자바 역사 / 구조 ]
    IT 공부 독서 정리/Java의 정석 2024. 11. 9. 20:18

    블로그를 개설한 지 1년이 넘었다.

    그런데 가끔 생각나서 들어와 글을 써야지, 정리도 해야지, 공부도 해야지… 이런 생각만 하다가 결국 또 미루고 미루며 나태해진 내 자신을 보았다.

    다시 한번 겨울이 다가오는 이 시즌부터 제대로 1~2주에 한 번은 글을 작성해볼까 한다. 그 시작은 바로 『자바의 정석』 책을 정리하는 것이다.

    늘 그렇듯 자전거 종주기를 쓰다 이런 생각이 떠오르곤 한다. 😭

    정말 이제부턴 2주에 한 번은 정리하는 습관을 가져야겠다.

    우선 수많은 자바 기초 서적 중에서 『자바의 정석』을 선택한 이유는 다음과 같다.

    1. 해당 책의 저자 분께서 현재도 활발히 활동 중인 자바 개발자라는 점이다. 커뮤니티 등을 통해 궁금한 점이나 이해가 부족한 점에 대해 직접 질문하고 피드백을 받을 수 있다는 장점이 있다.
    2. 기본서 기반의 온라인 강의가 제공된다는 점이다. 문서뿐 아니라 영상 콘텐츠로도 학습할 수 있어 다양한 방식으로 접근할 수 있다는 것이 큰 장점이라고 생각했다.
    3. 가장 중요한 이유는, 이 책이 많은 초보 개발자들이 선택한 기본서라는 점이다. 이는 이 책의 퀄리티가 검증되었음을 의미하며, 그만큼 관련된 블로그나 자료들이 많이 존재한다는 뜻이다. 강의와 책을 통해 이해되지 않는 부분이 있더라도 쉽게 참고할 수 있는 정리된 글들이 많다는 점이 큰 매력이다.

    이제 『자바의 정석』 1장 부분을 정리해보려 한다.


    『자바의 정석』 1장

    자바의 정석 1장은 대부분의 기술 서적과 동일하게 자바의 유래와 역사(만들어진 배경), 자바의 특징(장/단점), 자바 사용을 위한 준비사항(환경 설정)에 대해 다루고 있다.


    1. 자바 (Java Programming Language)

    자바(Java)란, 썬 마이크로시스템즈(Sun Microsystems, Inc 이하 '썬')에서 개발하여 1996년 1월 공식적으로 발표한 객체지향 프로그래밍 언어이다.

    자바의 가장 큰 특징 중 하나는 운영체제(Operating System, 플랫폼)에 독립적이라는 점이다. 즉, 자바로 작성한 프로그램은 운영체제의 종류와 관계없이 실행이 가능하다. 예를 들어, 스마트폰 앱의 경우 안드로이드와 iOS에 따라 개발 언어가 다르다. 일반 프로그램의 경우도 리눅스용, 윈도우용 프로그램 등 운영체제에 맞게 개발해야 한다. 그러나 자바는 이러한 제약 없이 동일한 프로그램을 다양한 OS에서 실행할 수 있다.

     

    두 번째 특징은, C++ 언어에서 사용되는 객체지향적 프로그래밍 언어를 채택하면서도 C++의 복잡한 개념들을 생략하여 학습이 비교적 쉽고, 간결한 표현이 가능하다는 점이다. 객체지향 언어에 대해서는 차후에 따로 다루기로 한다.

    또한, 자바는 오라클에 인수된 후 성능 개선과 함께 모바일 환경, 대규모 기업 환경, 최신 기술(XML 등)을 지원하면서 활동 영역을 넓혀가고 있다.


    2. 자바의 역사

    자바는 1991년 썬의 엔지니어들이 고안한 오크(Oak)라는 언어에서 시작되었다. C++의 한계를 보완하기 위해 새로운 언어를 개발하게 되었고, 이로 인해 오크라는 언어가 탄생했다. 오크는 운영체제에 독립적으로 개발할 수 있는 언어였다.

    원래는 PDA와 같은 소형 기기를 위한 언어였으나, 인터넷과 다양한 운영체제가 등장하면서 인터넷에 특화된 자바로 변화하게 되었다. 특히 자바는 정적인 웹페이지 개발이 가능한 유일한 언어로서 더 많은 사용자를 확보할 수 있었다. 이후 동적인 웹이 등장하면서 JSP와 서블릿 등 다양한 기술이 추가로 발전했다.


    3. 자바의 특징

    1. 운영체제에 독립적이다
      자바는 오크 언어에서 파생된 언어로, 사용되는 운영체제와 관계없이 한 번의 컴파일로 모든 운영체제에서 실행할 수 있다. 이 핵심적인 역할을 하는 것이 바로 JVM(Java Virtual Machine)이다. 운영체제별로 JVM이 존재하며, 자바 프로그램은 이 JVM과 연동되어 실행된다. JVM은 자바 프로그램을 해석하고 이를 운영체제가 이해할 수 있는 형태로 변환하여 전달한다.
    2. 객체지향 언어이다
      객체지향 언어는 상속, 다형성, 캡슐화라는 3가지 특징을 지니며, 자바는 이를 잘 적용한 언어이다.
    3. 비교적 배우기 쉽다
      자바의 연산자와 기본 구문은 C++에서, 객체지향 구문은 스몰톡(Smalltalk)에서 파생되었다. 필요한 요소만 남기고 불필요한 부분을 제거하여 배우기 쉽고, 간결하면서도 이해하기 쉬운 코드를 작성할 수 있도록 했다.
    4. 자동 메모리 관리(Garbage Collection)
      자바는 포인터와 같은 개념이 없고, 메모리 관리를 가비지 컬렉터가 해준다. 덕분에 메모리 관리를 신경 쓰지 않아도 되지만, 프로젝트 규모가 커지면 메모리 사용률을 고민해야 한다.
    5. 네트워크와 분산 처리를 지원
      인터넷과 대규모 분산환경을 염두에 두고 설계된 자바는 다양한 네트워크 관련 라이브러리를 제공하여, 웹소켓, 소켓, REST API 등을 쉽게 사용할 수 있다.
    6. 멀티스레드 지원
      자바의 멀티스레드는 운영체제와 관계없이 구현 가능하며, 스케줄링을 자바 인터프리터가 담당한다.
    7. 동적 로딩(Dynamic Loading) 지원
      자바는 프로그램을 여러 클래스로 구성할 수 있고, 필요에 따라 동적으로 해당 클래스를 로딩하여 실행한다. 클래스가 변경되어도 동적으로 컴파일이 가능해 유연한 개발이 가능하다.

    4. JVM(Java Virtual Machine)

    JVM은 'Java Virtual Machine'의 약자로, 흔히 자바 가상 머신이라고 한다. C/C++은 컴파일 시 운영체제에 맞는 기계어로 번역되지만, 자바는 실행 시 JVM이 기계어로 해석하여 실행한다. JVM 덕분에 자바 프로그램은 운영체제에 관계없이 실행할 수 있지만, 실행 과정에서 한 단계가 추가되어 속도가 다소 느려질 수 있다. 이를 보완하기 위해 JIT 컴파일러와 최적화 기술이 적용되어 속도 격차가 많이 줄어들었다.


    자바 애플리케이션 실행 과정

    일반 애플리케이션은 OS만 거치지만, 자바는 JVM을 거쳐 번역된다. 실행 속도가 다소 느릴 수 있지만, 다양한 운영체제에서 동작할 수 있는 장점이 크다.

    애플리케이션 애플리케이션
    OS(Windows) JVM
    컴퓨터(하드웨어) OS(Windows)
      컴퓨터(하드웨어)

    [표 1] C/C++ 애플리케이션자바 애플리케이션


    OS 별 자바 애플리케이션 실행 과정

    위에서 설명했듯이, 자바는 각 운영체제별 JVM을 가지고 있고 동일한 코드를 각각 운영체제에 적용하게 되면, 해당 운영체제에 맞게 바이트코드가 작성되며, JVM이 운영체제가 알아들을 수 있는 기계어로 번역을 해준다.

    JAVA 애플리캐이션 JAVA 애플리캐이션 JAVA 애플리캐이션
    Window용 JVM MAC용 JVM Linux용 JVM
    OS(Window) OS(MAC) OS(Linux)
    컴퓨터(하드웨어) 컴퓨터(하드웨어) 컴퓨터(하드웨어)

    [표 2] OS별 자바 애플리케이션 실행 과정

Designed by Tistory.