수학과의 좌충우돌 프로그래밍

[JAVA] 01. 자바를 시작하기 전에 본문

프로그래밍 언어/Java

[JAVA] 01. 자바를 시작하기 전에

ssung.k 2020. 11. 27. 17:06

1년도 더 전에 java에 대해서 아주 살짝 공부를 해보았는데 취업을 하고보니 java 개발자가 되어있네요.

python과 django만 하다가 다른 언어, 다른 프레임워크를 사용할려고 하니 모든게 낯설고 어렵지만 또 차근차근 공부해보도록 하겠습니다.

그래서 당분간은 java에 대한 기초를 학습하며 포스팅하도록 하겠습니다 :)

 

1. 자바

1.1 자바란?

  • 썬 마이크로 시스템에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어(현재는 오라클이 인수함)
  • 운영체제에 독립적이기 때문에 다양한 기종의 컴퓨터와 운영체제가 공존하는 인터넷 환경에 적합
  • 풍부한 클래스 라이브러리

 

1.2 자바의 역사

  • 1991년 썬 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작
  • 원래 목표는 가전제품에 탑재될 소프트웨어를 만든 것으로 C++을 확장해서 사용하려 했지만 부적합하다고 판단
  • 자바로 작성된 애플릿(Applet)은 정적인 웹페이지에 사운드와 애니메이션 등의 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었기 때문에 많은 인기
  • 보안상의 이유로 애플릿은 웹브라우저에서 지원하지 않지만 서버, 안드로이드 등 다양한 분야에서 사용 중

 

1.3 자바 언어의 특징

  • 운영체제에 독립적

    기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서는 많은 노력이 필요하지만 자바는 운영체제에 독립적입니다.

    자바 응용프로그램은 운영체제나 하드웨어가 아닌 자바가상머신(JVM)와 통신하고 JVM은 운영체제에 적합하게 명령을 변환하여 전달합니다.

    JVM은 운영체제에 종속적이기 때문에 각 운영체제마다 적합한 JVM이 제공됩니다.

  • 객체지향언어

  • 자동 메모리 관리

    가비지 켈렉터가 자동으로 메모리를 관리해주기 때문에 프로그래머가 직접 메모리를 관리하지 않아도 됩니다.

  • 멀티 쓰레드

    일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 구현방법, 처리방식이 모두 다릅니다.

    자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련된 라이브러리가 제공되므로 구현이 쉽습니다.

    그리고 여러 쓰레드에 대한 스캐줄링을 자바 인터프리터가 담당하게 됩니다.

  • 동적 로딩을 지원

    자바로 작성된 애플리케이션은 여러 개의 클래스로 구성됩니다. 자바는 동적 로딩을 지원하여 실행 시에 모든 클래스를 로딩하지 않고 필요한 시점에 로딩하여 사용합니다.

 

1.4 JVM(Java Virtual Machine)

위에서도 한 번 언급했지만 JVM은 Java Virtual Machine을 줄인 것으로 해석하면 자바를 실행하기 위한 가상 컴퓨터입니다.

Virtual Machine은 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어입니다.

자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요합니다.

일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java는 JVM을 한 번 더 거치기 때문에 속도가 비교적 느립니다.

그러나 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였습니다.

 

 

2. 자바 개발환경 구축하기

자바로 프로그래밍을 하기 위해서는 JDK(Java Development Kit)을 설치해야 합니다.

JDK를 설치하면 JVM과 자바클래스 라이브러리 외에 자바를 개발하는데 필요한 프로그램들이 설치됩니다.

JDK bin 디렉토리에 있는 주요 실행파일들은 다음과 같습니다.

  • javac

    자바 컴파일러로 자바 소스코드를 바이트코드로 컴파일합니다.

    javac hello.java
    

     

  • java

    자바 인터프리터로서 컴파일러가 생성한 바이트코드를 해석하고 실행합니다.

    java hello
    

     

  • javap

    역어셈블러로서 컴파일된 클래스 파일을 원래의 소스로 변환합니다.

    javap hello > hello.java
    

 

  • javadoc

    자동문서 생성기로 소스파일에 있는 주석을 이용하여 java 문서와 같은 형식의 문서를 자동으로 생성합니다.

    javadoc hello.java
    

 

  • jar

    압축프로그램으로 클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일로 압축하거나 압축해제합니다.

    압축 할 때 : jar cvf hello.jar hello1.class hello2.class
    압축 풀 때 : jar xvf hello.jar
    

     

JDK와 JRE

JDK : Java development Kit로 JRE와 추가적으로 개발에 필요한 실행파일(javac 등)이 있습니다.

JRE : Java Runtime Environment로 JVM과 클래스 라이브러리로 구성되어 있습니다.

Comments