본문 바로가기

JAVA

[Java] 이자바 Chapter1. 자바 시작하기

반응형

<이것이 자바다> 책과 유튜브강의를 보고 기록한 내용입니다.

 

1. 프로그래밍 언어란?

2. 자바란?

3. 자바 개발 환경 구축

4. 자바 프로그램 개발 순서

5. 주석과 실행문

6. 이클립스 설치

 

1. 프로그래밍 언어란?

1) 소스파일

텍스트 파일. 프로그램이 해야할 일을 작성. 이 때 사용되는 언어가 프로그래밍 언어.

 

2) 컴파일러

소스파일을 컴퓨터가 이해할 수 있는 기계어로 번역. 이 기계어를 운영체제가 해석해서 실행.

 

--> 즉 프로그래밍 언어란, 프로그램이 해야할 일인 소스파일을 작성할 때 사용되는 언어이다. 또한 프로그래밍 언어로 작성된 소스파일은 컴파일러를 통해 컴퓨터가 이해할 수 있는 기계어로 번역된다.

 

 

 

 

2. 자바란?

1) 이식성이 높다

자바 언어로 개발하나 프로그램은 다른 운영체제에서도 잘 실행된다. 자바로 소스코드 파일( .java 파일)을 작성하고, 이걸 딱 한 번 컴파일하면 클래스 파일( .class 파일)이 생성된다. 이 클래스 파일은 윈도우, 리눅스, 맥에서 모두 다 실행 가능하다.

 

2) 객체 지향 언어

부품(객체)를 먼저 만든다.

 

3) 캡슐화, 상속, 다형성 지원

4) 함수적 스타일 코딩 지원

java8부터 지원. 모두 객체지향보다 함수지향으로 코딩하는 게 쉬울 때가 있다. 람다식 지원. 람다식은 컬렉션 요소를 필터링, 매핑, 그룹핑, 집계 처리할 때 주로 사용한다.

 

5) 메모리 자동 관리

사용하지 않는 객체는 자동으로 메모리에서 제거

 

6) 다양한 프로그램 개발 가능 

다양한 애플리케이션을 위한 개발도구와 API를 에디션 형태로 구분.

 

(1) Java SE (Standard Edition) 

기본 에디션. 자바 프로그램 실행시키는 최소한의 환경. 

자바 프로그램 실행시키는 JVM 정의, 자바 프로그램들이 공통으로 사용하는 개발도구와 API 정의

구현체 : JDK (Java Development Kit)

더보기

구현체란? 에디션에 정의된 것을 실제로 구현한 형태. 예를 들어 JDK는 SE에 정의된 것을 실제로 구현한 형태이다.

 

(2) Java EE (Enterprise Edition)

서버 애플리케이션 개발 에디션. 웹 애플리케이션 개발 시 Java EE에서 정의한 API를 사용하면 된다. 

EE 구현체인 소프트웨어를 설치하면 웹어플리케이션을 개발하고, 실행할 수 있다.

구현체 : WAS (Web Application Server) - Tomcat, WebLogic, Jeus, Jboss 등

 

(3) Java ME (Micro Edition)

임베디드 또는 모바일 장비

 

 

7) 멀티스레드 쉽게 구현 가능

멀티스레드를 API 형태로 지원해서 병렬 처리를 쉽게 할 수 있다.

운영체제 별로 멀티 스레드 이용 API 다르지만 Java API로 일관된 생성과 관리 가능.

더보기

멀티스레드?

동시에 여러작업 할 경우나 대용량 작업을 빨리 처리하라 때는 병렬처리가 필요하다.

이 병렬처리에 필요한 게 멀티스레드.

 

8) 동적 로딩 지원

동적 로딩은 프로그램 실행도중에 클래스들을 메모리로 로딩해서 사용하는 것.

네트워크에서 프로그램 실행 파일들이 다운로드 되고 사용되는 형태.

프로그램 실행할 때 사용할 객체를 미리 만들어 놓지 않고, 필요 시점에 동적으로 로딩해서 객체 생성 가능.

유지보수 시에 특정 객체(문제가 되는 부분)만 쉽게 수정 및 교체해서 사용할 수 있다. 

 

9) 막강한 오픈소스 라이브러리

자바도 오픈소스 언어라, 자바로 개발된 라이브러리로 오픈소스가 많다.

 

 

 

 

 

3. 자바 개발 환경 구축

1) 자바 개발 도구 (JDK)

JDK는 Java SE 구현체의 종류.

Java SE는 JVM, 자바 프로그래밍이 공통적으로 사용하는 API만 묶어놓은 것.

SE는 정의일 뿐이고, 실제 SE를 사용할 수 있는 소프트웨어로 만든 것이 구현체이다. 이 종류에는 JDK, JRE가 있다.

개발을 위해서는 JDK 반드시 설치. 개발 없이 단순 실행만 하려면 JRE 설치해도 된다. 

- JDK : JRE + 개발도구

- JRE : JVM + 표준 클래스 라이브러리

더보기

JVM : 자바 프로그램 실행하는 가상의 운영체제

2) 환경 변수 설정

환경 변수 설정 이유?

--> javac.exe가 있는 경로(bin)가 아닌 다른 경로에서 javac.exe를 호출하더라도 javac.exe가 있는 경로로 가서 실행할 수 있도록.

- JAVA_HOME 생성 : JDK 설치 디렉토리로 지정. 주로 서버가 구동될 때 JDK설치 위치를 알기 위해 사용됨.

- PATH 수정 : %JAVA_HOME%/bin; 추가. 임의의 디렉토리에서 자바 명령어(javac.exe, java.exe)를 실행시키기 위해 설정.

 

 

 

 

4. 자바 프로그램 개발 순서

1) 순서

자바 소스 파일 작성 (.java) -- 컴파일러 (javac.exe) --> 바이트 코드 파일 (.class) -- 자바 가상 기계 (java.exe) --> 기계어 --> 실행

 

2) 2단계 컴파일 과정

자바는 2단계 컴파일 과정을 갖고 있다.

(1) 자바 소스파일을 컴파일러를 사용해서 바이트 코드 파일을 생성하는 것.

(2) 자바 가상 기계를 사용하여 바이트 코드 파일을 기계어로 번역하는 것.

이렇게 2단계 컴파일 과정을 가지는 이유는 바이트 코드 파일을 운영체제와 상관없이 개발해서 다양한 운영체제에서 이 바이트 코드 파일을 그대로 실행할 수 있게 하기 위함.

class 파일을 어떤 OS에 넣더라도 실행된다. JVM은 클래스 파일을 해석하고 운영체제에 맞는 기계어로 번역한다. 

--> 바이트 코드 파일 (.class) 은 운영체제에 독립적.

--> 바이트 코드는 (.class) JVM에 독립적이지만 JVM은 운영체제에 종속적이다.

 

3) main

실행할 때 main을 찾아서 먼저 실행한다.

 

 

 

 

 

5. 주석과 실행문

1) 주석

프로그램 실행과 상관없이 코드에 설명 붙인 것.

주석을 많이 사용한다고 해서 프로그램의 크기가 커지진 않는다. 따라서 필요한 주석이라면 붙이기!

/** ... */ : API 도큐먼트 주석. 나중에 도큐먼트 만들 때 사용된다.

2) 실행문

프로그램이 실행할 때 실행하는 코드. 변수 선언, 값 저장, 메소드 호출에 해당하는 코드이다.

JVM이 실행문을 찾아서 실행한다. 하나의 실행문마다 반드시 끝에 세미콜론(;)으로 끝을 표시.

 

 

 

 

 

6. 이클립스

1) 이클립스

자바 통합 개발 환경 (IDE) 제공

IDE : Integrated Development Environments. 에디터와 디버깅, 자동 코드 완성 등의 기능을 제공해주는 것을 보통 IDE라고 한다.

 

2) 이클립스 기능

(1) 프로젝트 생성 기능 제공

(2) 자동 코드 완성 기능 제공

(3) 디버깅 기능 제공

 

3) 이클립스 특징

(1) 플로그인 설치가 가능해서 안드로이드, 스프링, C 등 다양한 개발 환경 구축 가능

(2) 이클립스는 자바 언어로 개발된 툴이므로 JDK 필요

(3) 저장과 동시에 자동 컴파일 된다. 따로 javac 명령어 실행할 필요도 없이 저장만 해주면 된다.

(4) 기본값으로 프로젝트 설정 시, class 파일은  bin 폴더에 java 파일은 src 폴더에 구분되어 들어간다.

더보기

bin폴더를 보고 싶다면, package explorer뷰가 아니라 Navigator 뷰를 사용하면 된다.

근데 bin은 컴파일돼서 자동으로 들어가는 곳이라서 굳이 따로 볼 필요는 없다.

 

4) 이클립스 용어

- 워크 스페이스 : 이클립스가 생성한 프로젝트가 기본적으로 저장되는 디렉토리. 워크스페이스 런처에서 설정. 워크 스페이스에는 .metadata 디렉토리도 있는데, 이건 자동 생성되며 이클립스 실행 시 필요한 메타데이터를 저장. 예를 들어 이클립스 폰트 크기 변경했으면 해당 내용이 저장된다. 이 디렉토리 삭제 시, 이클립스는 초기 상태로 다시 실행된다.

- perspective : 개발 프로젝트 종류별로 유용한 view들을 묶어놓은 것. 뷰들이 배치되어 있는 것. 변경 가능하다.

- view : 퍼스펙티브를 구성하는 작은 창. 여러 목적에 맞게 내용을 보여준다. package explorer, console은 매우 유용하다.

 

 

728x90
반응형