본문 바로가기
Java

[점프 투 자바] 1장 자바란 무엇인가?

by seonggu 2024. 1. 1.

썬 마이크로 시스템즈의 제임스 고슬링

객체지향 프로그래밍 언어 1995년 발표됨

처음에는 가전 제품에 탑재해 동작하는 프로그램을 ㅁ나들기 위해 탄생

지금은 웹 모바일 개발에서 가장 많이 사용하는 언어

 

  • 자바로 할 수 있는 일

웹 프로그래밍

일반적으로 크롬 엣지와 같은 브라우저로 인터넷 사용

게시판이나 방명록 같은 것을 웹 프로그램

자바는 웹 프로그램 개발에 널리 사용, 서버 사이드(백엔드)에 강점이 있음.

서블릿(Servlet), JSP, 스프링 프레임 워크같은 기술들을 사용하여 웹 프로그램을 만들 수 있음

안드로이드 애플리케이션

안드로이드 개발할 때 사용하는 메인 언어

안드로이드 스튜디오와 자바를 사용

게임 개발

안드로이드 게임의 대부분은 자바로 개발되었음.

게임 개발을 위한 대표적인 자바 라이브러리 LWJGL, 자바 프레임워크 libGDX

멀티 플랫폼도 개발가능

데이터베이스 처리

데이터를 저장하고 조회하기 위해서는 데이터베이스 시스템이 필요

자바와 연결하여 데이터 관리를 함

빅데이터 및 분산 처리

대규모의 복잡한 데이터를 빅테이터라고 함.

전통적인 데이터처리 방식으로는 분석이 어려움. 이를 효과적으로 처리하기 위해 분산 처리 기술이 사용된다.

분산 처리는 컴퓨터 또는 클러스터에서 데이터와 연산을 분산시켜 병렬 처리하는 방식.

자바는 하둡, 스파크와 같은 빅 데이터 처리에 필요한 도구와 프레임워크를 제공함

 

 

  • 자바로 할 수 없는 일

시스템 프로그래밍

운영체제, 드라이버, 커널 등의 Low Level 시스템 개발에는 C, C++ 같은 언어가 더 적합

높은 성능을 요구하는 프로젝트

GC(Garbage Collection, GC)과 JIT(just-in-time) 컴파일러와 같은 기능 때문에 실행속도가 다소 느림

고성능이 필요한 경우 C, C++ 또는 Rust

 

GC : 프로그램에서 사용되지 않는 메모리를 자동으로 회수하는 메모리 관리 기법

JIT 컴파일러 : 프로그램 실행 시점에 바이트 코드를 기계어로 변환하는 기술

 

IOS 애플리케이션 개발

자바는 안드로이드 애플리케이션 개발의 주요 언어,

IOS는 Swift 또는 Objective-C를 사용함. 일부 네이티브 데스크톱 애플리케이션 개발에서도 자바의 사용이 제한적일 수 있음.

 

 

  • 자바 둘러보기

Hello world 프로그램만 제대로 공부하면 자바언어의 절반 이상 익히는 것과 다름없음

JDK, IDE 설치하는 방법과 클래스, 함수, public, static의 개념을 이해하기 때문

첫 언어로는 어려울 수 있음

언어가 추구하는 방향성 때문인데, 모든 것이 클래스 기반에서 동작해야 하는 자바의 특징이 나중에는 무척 편리하지만 처음 시작하기엔 큰 장벽일 수 있음.

 

 

  • JDK 설치하기

개발 환경 구축. 개발 환경이란 프로그램을 작성할 수 있는 컴퓨팅 환경

JDK(Java development kit)는 자바 코드를 작성하는 도구, 소스를 컴파일 하는 컴파일러 등 으로 이루어져 있으며 온라인에서 무료

컴파일 : 프로그래머가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 것

https://www.oracle.com/java/technologies/downloads/ 에서 다운

운영체제 선택 - 보통 C:\\program files\\java

 

 

  • 자바 파일과 컴파일 알아두기

인텔리제이(intellij)를 사용하여 자바 프로그램을 작성하기 전에 한 가지 알아두자.

javac와 java

JDK를 설치했다면 JDK가 설치된 디렉터리의

하위 디렉터리인 bin에 javac.exe java.exe 파일이 저장되어 있을 것이다.

bin 디렉터리에 java.exe만 있고 javac.exe.가 없다면 JDK가 아닌 JRE를 설치한 것 JRE(Java Runtime Environment) : 자바가 실행될 수 있는 최소한의 파일들이 설치되어 있는 환경 JRE에는 javac.exe와 같이 자바 파일을 컴파일하기 위한 도구는 포함되지 않는다.

 

javac는 java comiler의 줄임말

자바 파일을 컴파일할 때 사용

모든 언어는 코드를 기계어로 번역하는 프로그램인 컴파일러 또는 그와 비슷한 기능을 하는 것이 있다.

자바 파일은 우리가 작성해야하는 자바 프로그램 .java 자바 파일 또는 자바 소스라고도 함.

 

만약 MyProgram.java 작성 →

컴파일러가 .java파일을 .class로 (컴파일러는 javac.exe에 위치) →

.class 파일을 실행하는 단계(JVM, Java Virtual Machine, JVM은 java.exe)

 

.class 파일은 이진파일로 되어있고 이를 JVM이 해석하여 프로그램을 실행함.

 

 

  • 왜 자바는 exe 파일이 아닌 class 파일을 생성하게 될까?

JVM이 exe에 포함되어야 하는 형식이므로 exe파일이 커지는 단점발생

C나 C++은 컴파일된 실행 파일을 모든 운영체제에서 사용 불가 (windows → linux X)

JVM처럼 중간 단계 역할을 수행하는 것이 없음.

C, C++ 등의 언어에서 만든 실행 파일은 JVM 같은 단계가 없어서 속도는 빠름

근데 운영체제마다 실행 파일을 따로 작성해야함.

자바도 JIT just-in-time을 도입하는 등의 발전을 거듭하여 실행속도도 하드웨어를 직접 제어하는 경우만 아니라면 거의 C, C++를 따라잡음

 

 

  • 인텔리제이 설치하기

JDK를 설치했다면 자바 프로그램 작성을 도와주는 도구인 intelliJ를 설치해보자.

문서 작성을 도와주는 도구로 MS워드나 한글이 있는 것 처럼 프로그래밍 언어로 프로그램을 작성할 때에도 도와주는 도구들이 있음.

이러한 도구를 IDE(Intergerated Developmetn Environment 또는 통합 개발 환경) 이라고 한다. 가장 많이 추천 → intellij

https://www.jetbrains.com/ko-kr/idea/download/

Community 버전 사용

 

 

class 앞에 사용한 public 키워드는 자바 프로그래밍할 때 사용하는 접근 제어자인데, class명 앞에 사용하면 조금 다른 의미로 쓰인다.

HelloWorld.java라는 이름으로 자바 파일을 작성하면 파일은 하나지만 그 안에 클래스를 여러개 작성할 수 있다.

다만 클래스명과 파일명이 같으면 class 앞에 public을 붙여주어야 한다는 관례적인 규칙이 있다.

 

 

  • main 메서드 이해하기

HelloWorld.java 클래스를 실행하려면 main 메서드를 작성해야함 .

어떤 프로그램이든지 시작과 끝이 있는데 이것을 관리하는 것이 바로 main 메서드

public class HelloWolrd {
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

메서드는 함수와 동일한 개념이다. 다만 클래스 내 함수는 모통 메서드라고 한다.

즉, 자바는 모든 것이 클래스 기반이므로 자바에서 사용되는 함수는 모두 메서드이다.

 

public : 메서드의 접근 제어자로, 누구나 이 메서드에 접근할 수 있다는 의미

static : 메서드의 static이 지정되어 있으면 이 메서드는 인스턴스를 생성하지 않아도 실행할 수 있다는 것을 의미.

void : 메서드의 리턴값이 없음을 의미.

String : String은 문자열을 나타내는 자바의 자료형 ([]는 값이 여러개로 이루어진 배열이라는 것을 의미

args : String[] 자료형의 변수명

 

 

  • 자바의 8가지 특징

    1. 간단하다.

자바는 C++에 가깝지만 훨씬 간단함. 자바는 고급 언어에 들어 있는 여러 요소 중 불필요하다고 판단되는 것을 모두 제거했다.

 

2. 객체지향적이다(Object-oriented)

자바는 숫자(int, float, long 등)나 논릿값(true, false)를 제외하면 모두 객체로 구성된다.

실제 자바는 Object 클래스에서 모든 클래스를 파생함

위 숫자 논리값은 원시 자료형이라고 함

 

3. 인터프리터 언어(interpreted)

자바는 컴파일언어인 동시에 인터프리터 언어

텍스트 소스 → 컴파일(이진 파일, 클래스파일) → 자바 런타임이 클래스파일을 인터프리트하면서 실행한다.

먼저 시스템과 무관한 이진파일을 만듦으로써 컴파일 언어에 가까운 속도와 함께 시스템의 독립성 얻을 수 있음

 

4. 강력하다(robust)

포인터 연산을 지원하지 않는다. 잘못된 주소를 가리킬 가능성을 사전차단

모든 메모리 접근을 자바 시스템이 관리하고 제한하며, 또한 예외 처리까지 하므로 시스템이 붕괴될 우려가 없음.

자바는 리소스 관리(garbage collection)을 하는데 사용이 끝난 리소스를 시스템이 메모리에서 삭제하는 방식 채택

프로그래머가 메모리 유출 걱정 X

 

5. 안전하다(Secured)

자바는 자료형 타입에 민감함.

그래서 자바는 컴파일만 되면 실행할 때 오류 발생률이 다른 언어에 비해 현저히 낮음

자바의 족쇄 같은 자료형 체크는 코드를 정확하게 만들어줌

 

6.플랫폼이 독립적임

자바의 실행 파일은 이진 코드이므로 자바 런타임을 설치한 시스템에는 어디서나 실행할 수 있음.

운영체제 상관없음 <

JVM으로 실행하기 때문임. 이런 방식이 느리고 부담스러웠지만 하드웨어 발전으로 단점이 거의 사라짐

 

 

7. 멀티 스레드를 지원함

프로그램 단위가 같은 스레드를 동시에 수행할 수 있음.

자바는 멀티 프로세서 하드웨어를 지원하도록 설계되어 있음. 멀티 CPU 시스템에서 효율이 높음

 

8.동적이다(Dynamic)

자바 인터페이스를 이용하면 모듈을 갱신할 때 다른 모듈까지 모두 갱신할 필요가 없음

인터페이스가 인스턴스 변수와 도구 실행문을 모두 배제한 채 객체 간의 상호 작용을 정의하기 때문

 

 

 

 

 

 

 

 

참고자료 :

위키독스 점프 투 자바 https://wikidocs.net/book/31