01 자바를 시작하기 전에 - 자바 편.

자바를 시작하기 전에 🧐

나의 친구 자바를 소개합니다 ^ㅅ^

1 자바(Java Programming language)

1.1 자바란?

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

내 친구 자바를 짧게 자랑하자면...

  1. 운영체제에 독립적
    ㄴ 자바로 작성된 프로그램은 운영체제 종류에 관계없이 실행이 가능하기 때문에 다양한 기종의 컴퓨터와 운영체제가 공존하는 인터넷 환경에 적합해요.

  2. 풍부한 클래스 라이브러리(Java API) 👍
    ㄴ 필요한 요소들을 기본적으로 제공하고기 때문에 이 클래스 라이브러리만을 잘 활용해 강력한 기능의 자바 프로그램을 작성할 수 있어요.

자바는 꾸준히 성능을 개선하여 새로운 버전을 발표하고 있으며 모바일(J2ME)이나 XML 등 최신 기술을 지원하고 있어요!

MI) 2010년 썬이 오라클(Oracle) 사에 인수되면서 이제는 자바는 오라클사의 소속이 되었답니다.

1.2 자바의 역사

1991, 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서 시작.

제임스 고슬링과 썬의 엔지니어들은 가전제품에 탑재할 소프트웨어를 만들기 위해서 C++을 확장해서 사용하고자 했지만 부족했어요.

그래서 그들은 C++의 장점을 도입하고, 단점을 보완한 새로운 언어를 개발하게 되었는데!

Oak는 가전제품이나 소형기기에 사용될 목적이었지만 여러가지 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하고, 운영체제에 독립적인 Oak가 이에 적합하다고 판단하여 Oak를 인터넷에 적합하도록 개발 방향을 바꾸며 이름도 자바(Java)로 개명하게 되었어요.

자바로 개발한 웹브라우저인 '핫 자바(Hot Java)'를 발표하고, 그 다음해인 1996년 1월 자바의 정식 버전을 발표했습니다!

그 당시만 해도 자바로 작성된 애플릿(Applet)은 정적 웹페이지에 사운드와 애니메이션 등 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었기에 많은 인기를 얻고 단 기간에 많은 사용자를 확보했답니다.

하지만... 현재 최신 웹브라우저에서는 보안상의 이유로 더 이상 애플릿을 지원하지 않아요.

대신 서버 쪽 프로그래밍을 위한 서블릿(Servlet)과 JSP(Java Server Pages)가 더 많이 사용됩니다.

1.3 내 친구 자바를 자랑합니다 🤵

  1. 운영체제에 독립적 (Write once, run anywhere)
    ㄴ 자바 응용 프로그램은 일종의 에뮬레이터인 자바 가상 머신(JVM)하고만 통신하고 JVM이 자바 응용 프로그램으로부터 전달 받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달해요
    (하지만 JVM은 운영체제 종속)

  2. 객체지향언어
    ㄴ 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어

  3. 비교적 배우기 쉬움
    ㄴ C++과 스몰톡의 장점을 취하고, 복잡하고 불필요한 부분은 과감히 제거하여 단순화

  4. 자동 메모리 관리
    ㄴ 가비지셀렉터(garbage collector) 자동으로 메모리 관리를 해주어 프로그래머는 따로 관리 X
    (자동으로 메모리 관리를 한다는 것이 다소 비효율적)

  5. 네트워크와 분산처리 지원
    ㄴ 다양한 네트워크 프로그래밍 라이브러리(Java API)

  6. 멀티스레드 지원
    ㄴ 시스템과는 관계없이 구현 가능, 관련된 라이브러리 지원(Java API)
    (여러 스레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당)

  7. 동적 로딩(Dynamic Loading) 지원
    ㄴ 실행 시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용 가능,
    일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 됨.
    (변경사항이 발생해도 비교적 적은 작업으로 처리할 수 있는 유연한 애플리케이션 작성 가능)

MI) 자바의 단점은 속도가 대표적이다.
하지만 바이트 코드(byte code)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 Hotspot 등 
신기술 도입으로 JVM 기능이 향상되어 속도 문제가 상당히 개선되었어요.

1.4 JVM(Java Virtual Machine)

JVM: 자바를 실행하기 위한 가상 기계(= 소프트웨어로 구현된 하드웨어)

자바로 작성된 애플리케이션은 모두 JVM에서만 실행 되어요.

일반 애플리케이션
OS만 거치고 하드웨어로 전달

OS 종속적
vs

Java 애플리케이션
JVM, OS, 하드웨어로 전달

하드웨어에 맞게 완전히 컴파일되지 않음.
-> 실행 시에 해석(interpret)되기 떄문에 속도가 느림. (하지만 많이 개선됨)

JVM과 상호작용하여 OS와 하드웨어 독립적
(하지만 JVM은 운영체제 종속)


🔼 Java 애플리케이션과 일반 애플리케이션의 비교

좋은 웹페이지 즐겨찾기