BACKEND/JAVA

[이것이 자바다] 1장 자바 시작하기

석태 2024. 1. 18. 17:57

자바란?

1995년도에 처음 썬 마이크로시스템즈(Sun  Microsystems)에서 자바 언어를 발표되었다. 초반에는 메모리 및 CPU를 지나치게 많이 사용하기 때문에 윈도우 프로그래밍 언어로는 부적합하다는 문제가 있었지만 인터넷이 활성화되면서 웹 애플리케이션 구축용 언어로 자바가 급부상하였다.

 

자바의 특징

1. 이식성이 높은 언어

여기서 이식성이란?

서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 뜻하는 것이다. 

예를 들어서 윈도우에서 실행하는 프로그램이 리눅스 or 유닉스에서 실행할 수 있다면 이식성이 높은 것!

대부분 윈도우에서 실행되는 프로그램을 리눅스 or 유닉스에서 실행을 할려면 소스 수정 후, 재컴팡일 과정을 거쳐야 하지만 자바는 아니다!! 자바로 개발된 프로그램은 소스 파일 변경없이 JRE가 설치 되어 있는 모든 운영체제에서 실행이 된다.

JRE는 뒤에서....

2. 객체 지향 언어

Spring에서 다루는 AOP(관점지향프로그래밍)가 있지만 자바는 객체지향 프로그래밍(OOP : Object Oriented Programming)이다.

여기서 객체 지향이란?

쉽게 부품에 해당하는 객체를 먼저 만들고, 이 객체를 이용해서 조립하고 연결해서 전체 프로그래밍을 완성하는 기법을 뜻한다.

객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.

3. 함수적 스타일 코딩 지원

함수적 프로그래밍을 위해 람다식(LanBda Expressions)을 자바 8부터 지원한다.

여기서 람다를 사용하는 이유는 컬렉션 요소를 필터링, 매핑, 집계 처리를 쉽게하고 코드를 간결화 하기 위해 사용한다.

4. 메모리를 자동으로 관리

자바는 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Grabage Collector)를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜 메모리를 관리한다.

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

다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 정의

* Java SE(Standard Edition) - 기본 에디션

        자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의

클라이언트와 서버 프로그램에 상관없이 자바 프로그램을 개발하고 실행하기 위해서는 반드시 자바 개발 키트(JDK)를 설치해야 한다.

* Java EE(Enterprise Edition) - 서버용 애플리케이션 개발 에디션

       분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다.

       서버용 애플리케이션으로 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트 EJB(Enterprise Java Bean0, XML 웹 서비스가 있다.

6. 멀티 스레드 쉽게 구현 

하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다. 자바는 스ㅔ드 생성 및 제어와 관련되 라이브러리 API를 제공하고 있기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현 가능

7. 동적 로딩(Dynamic Loading)을 지원

애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적으로 로딩해서 객체를 생성한다. 개발 완료 후 수정이 발생해도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다.

 

* 자바 가상 기계(JVM : Java Virtual Machine)

자바는 운영체에서 바로 실행할 수 없는 프로그램이다.

이유는? -> 완전한 기계어가 아닌 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상 운영체제가 필요한다.

가상 운영체제는 바로 JVM이다!

운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다. 따라서 운영체제와 상관없이 JVM이 있기 떄문에 자바 프로그램을 개발할 수 있다.

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

-> 자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 한다.

JVM은 JDK 또는 JRE를 설치하면 자동으로 설치

자바 프로그램의 실행 단계

 

 

 

자바 소스 작성에서부터 실행까지의 과정 도식화

 

public class JavaCmdFile{
	public static void main(String[] args){
    	System.out.println("create JavaFile");
    }
 }

cmd에서 실행 하기 위한 자바 소스 파일 생성

 

 

// javac : 자바 컴파일러를 이용하여 java 파일을 이용해서 class 파일 생성
C:\Users\jts06>javac JavaCmdFile.java
C:\Users\jts06> dir
2024-01-18  오전 11:27               427 JavaCmdFile.class
2024-01-18  오전 11:27               107 JavaCmdFile.java	
// java 프로그램 실행
C:\Users\jts06>java JavaCmdFile
create JavaFile

명령 프롬프트(cmd)를 이용한 java 프로그램 실행