자바 시작하기

hovi·2023년 5월 30일
0

JAVA

목록 보기
1/36

JAVA ?

자바는 C++달리 처음부터 객체지향언어로 개발된 프로그래밍 언어 입니다.

자바는 자바 가상 머신(JVM)을 사용하여 어느 운영체제에서나 같은 형태로 실행될 수 있습니다.

이러한 점이 수많은 개발자로 하여금 자바를 사용하게 하는 원동력이 되고 있습니다.

자바의 역사

자바는 가전제품 내에서 동작하는 임베디드 프로그램을 위한 언어로 썬 마이크로시스템즈(Sun Microsystems)사의 제임스 고슬링(James Gosling) 팀에 의해 개발 되었습니다.

1991년에 오크(Oak)라는 이름으로 시작하여, 1996년에 발표된 1.0.2 버전부터 자바(Java)라는 이름을 사용하게 됩니다.

1998년 발표된 J2SE 1.2에서는 웹에서도 자바를 돌릴 수 있게 해 주는 자바 애플릿(Java Applet)이 추가되며, 자바의 인기는 급상승하게 됩니다.

그 후 버전이 업데이트될 때마다 다양한 기능이 지원되며 자바는 꾸준한 인기를 누리게 됩니다.

이후 2009년에 썬 마이크로시스템즈사가 오라클과 인수 합병됨에 따라 자바 또한 오라클로 소유권이 넘어갑니다.

자바의 특징

  1. 자바는 운영체제와는 독립적으로 실행할 수 있습니다. (JVM의 특징)
  2. 자바는 불필요한 기능을 과감히 제거하여 다른 언어에 비해 배우기가 쉽습니다. (C++대비 쉬움)
  3. 자바는 자동 메모리 관리 등을 지원하여 다른 언어에 비해 안정성이 높습니다 (C/C++에서는 개발자가 직접 메모리 관리)
  4. 자바에 관한 수많은 참고 자료를 찾을 수 있습니다. (라이브러리 풍부)
  5. 네트워크와 분산 환경 지원, 멀티스레드 지원, 동적 로딩 지원

자바 언어가 가지는 단점은 다음과 같습니다.

  1. 자바는 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느립니다.
  2. 자바는 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있습니다.
  3. 자바는 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편입니다.

이식성이 높은 언어

이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행 할 수 있는 것을 말합니다.

예를 들어 윈도우에서 실행되는 프로그램은 리눅스, 유닉스 또는 맥에서 실행 할 수 있다면 이식성이 높은 것이고, 실행 할 수 없다면 이식성이 낮다고 볼 수 있습니다.

자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능 합니다.

객체 지향 언어이다.

프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍이라고 합니다.

함수형 프로그래밍 지원

대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그램을 위해 함수적 스타일 코딩을 지원 합니다.

자바는 함수형 프로그래밍 위해 람다식을 지원하며, 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는게 쉬워지고, 코드가 간결해 집니다.

메모리 자동 관리

자바는 C/C++와 다르게 개발자가 직접 메모리에 접근 할 수 없도록 설계되어 있습니다. 메모리는 자바가 관리하며 객체 생성시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기를 실행시켜 자동적으로 사용하지 않는 객체를 제거 시켜 줍니다.

다양한 애플리케이션 개발할 수 있다.

자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발 할 수 있습니다.

윈도우 애플리케이션, 서버용 웹 어플리케이션, 모바일용 안드로이드 앱 등 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있습니다.

멀티 스레드를 쉽게 구현 할 수 있다.

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

동적 로딩을 지원 한다.

자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로 부터 생성된다.

애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적으로 로딩해서 객체 생성 합니다.

막강한 오픈소스 라이브러리가 풍부 하다.

자바는 오픈 소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈 소스가 풍부 합니다.

자바 프로그램 개발 과정

컴파일

인간이 이해하는 언어를 통해 프로그램을 만들고 이를 기계어로 번역하는 과정

자바 컴파일러

자바 컴파일러는 작성한 자바 소스 코드를 자바 가상 버신이 이해 할 수 있는 자바 바이트 코드로 변환 합니다.

C/C++언어는 각각의 운영체제 맞는 컴파일러가 필요 합니다.

자바는 각각의 운영체제에 맞는 JVM을 통해서 실행 됩니다.

자바 바이트 코드

자바 가상 머신이 이해 할 수 있는 언어로 변환된 자바 소스 코드를 의미 합니다.

자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불립니다.

자바 바이트 코드의 확장자는 .class 입니다.

자바 바이트 코드는 자바 가상 버신만 설치되어 있으면, 어떤 운영체제에서라도 실행 될 수 있습니다.

자바 가상 머신(JVM)

자바 가상 머신(JVM)이란 자바 바이트 코드를 실행시키기 위한 가상의 기계라고 할 수 있습니다.

자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있으므로, 자바 프로그램을 실행하기 위해서는 반드시 자바 가상 머신이 설치되어 있어야 합니다.

위의 그림처럼 서로 다른 운영체제라도 자바 가상 머신만 설치되어 있다면, 같은 자바 프로그램이 아무런 추가 조치 없이 동작할 수 있습니다.

따라서 개발자는 한 번만 프로그램을 작성하면, 모든 운영체제에서 같이 사용할 수 있는 장점이 있습니다.

JDK, JRE, JVM ?

  • JDK (Java Development Kit) : JRE + 개발을 위한 도구(컴파일러, 디버그)등을 포함
  • JRE (Java Runtime Environment) : JVM을 포함하고 있으며 자바 프로그램 실행에 필요한 라이브러리등이 포함되어 있습니다.
  • JVM(Java Virtual Machine)의 약자이며 OS별로 존재 한다. 바이너리 코드를 읽고 실행 합니다.

빌드

소스 코드 파일을 컴퓨터에서 실행할 수 있도록 해주는 것 (컴파일보다 상위 개념)

추가 설정 부분이나 패키징 등

빌드 툴

MavenGradle등이 있습니다. Spring boot에서 사용 됩니다.

profile
풀스택 예비 개발자

0개의 댓글