백엔드(Back-End) 개발자(Engineer)란?
🤓 웹 애플리케이션 서버 측의 설계, 구조, 유지보수를 담당하는 사람
즉, 백엔드는 웹 애플리케이션에서 서버 혹은 데이터베이스를 관리하는 기술이다.
JAVA란?
- 1996년에 sun 사에서 발표한 객체지향의 특징을 잘 반영한 언어
JAVA 특징
- 플랫폼 독립적: 운영체제에 따라 코드를 재작성 하지 않아도 된다. 한번만 작성해도 여러 운영체제에서 동작하기 때문이다.
"Programmers Write Once, Run anywhere" (WORA)
JVM이라는 Java 가상 머신 위에서 동작하기 때문에 가능하다.
- 객체 지향적: 객체 지향의 반대 언어가 절차 지향적 언어인데, 이에 비해 생산성과 보안성이 높다. 객체 지향 언어는 구역별로 동작을 나눌 수 있어 재사용이 높고 각 구역마다 제한을 둘 수 있기 때문이다.
→ 이전에는 장점이었으나 최근 언어들은 기본적으로 이를 가지고 있기 때문에 '특징' 에 가까워졌다.
Java Development Kit (JDK) 역사
1995년 - Java의 출시: Java와 JDK 1.0이 Sun Microsystems에 의해 공개되었다. 이 초기 버전은 플랫폼 독립성과 "한 번 작성하면 어디서나 실행될 수 있다(Write Once, Run Anywhere)"는 개념으로 주목받았다.
1998년 - JDK 1.2: "Java 2"로 널리 알려진 이 버전은 Java의 첫 번째 주요 업데이트였으며, Swing GUI 툴킷과 다양한 성능 향상이 포함되었다.
2004년 - JDK 5.0: 'Tiger'라는 별명으로 불린 이 버전은 Java 언어에 중대한 변화를 가져왔다. 제네릭스, 어노테이션, 자동 박싱/언박싱, 열거형 등이 도입되었다.
2011년 - JDK 7: Oracle이 Sun Microsystems를 인수한 후 출시된 첫 번째 JDK 버전이다. 이 버전은 자동 리소스 관리, 다중 예외 처리 등을 추가했다.
2014년 - JDK 8: 람다 표현식과 스트림 API의 도입으로 함수형 프로그래밍이 강화되었다. 이는 Java의 프로그래밍 모델에 중대한 변화를 가져왔다.
2017년 - JDK 9: Java 플랫폼 모듈 시스템(JPMS)이 주요 특징으로, 더 나은 애플리케이션 성능과 보안을 제공하도록 설계되었다.
2018년 이후 - 정기적인 업데이트: Oracle은 JDK에 대한 새로운 릴리스 모델을 도입했다. 이 모델 하에서, JDK는 매년 3월과 9월에 새로운 기능 업데이트를 받게 된다.
2020-2023년: 이 기간 동안 JDK는 여러 가지 성능 개선, 새로운 언어 기능, API 개선 등을 포함한 정기적인 업데이트를 계속했다. 이 시기의 주요 업데이트에는 레코드, 패턴 매칭, 프로젝트 로옴(Java 가비지 컬렉션 개선) 등이 포함된다.
JAVA 장점
- 간결한 객체지향 언어
- Garbage Collection을 통한 메모리 관리
JVM이라는 가상머신 위에서 동작하기 때문에 메모리도 JVM의 Garbage Collection이라는 모듈을 통해 관리해 주게 된다.
- 플랫폼에 종속적이지 않고, 한 번 컴파일된 프로그램은 어느 운영체제나 환경에서 동일하게 실행을 보장
- 많은 오픈소스 프레임워크를 통해 생산성 증가
JAVA 단점
- 처리속도가 중요한 프로그램에는 적합하지 않음
- 최근 나오는 프로그래밍 언어에 비해 길고, 예외처리가 필요
- 하드웨어를 직접적으로 컨트롤할 수 없음
- GUI가 많은 프로그램에는 적합하지 않음
그래픽을 통해 인터페이스를 구축하는 프로그램
IDE란?
IDE(Integrated Development Environment)
- 개발에 필요한 모든 작업을 하나의 프로그램에서 할 수 있는 통합 개발 환경
- 대표적 기능으로 컴파일러, 텍스트 편집기, 디버거 등이 존재
이외에도 다양한 Plug-in을 제공
- 대표적인 IDE로 IntelliJ, Eclipse, Visual Studio
JAVA 프로그램 작성/실행 과정
- 자바 소스 코드(Program.java) -> 자바 컴파일러 -> 바이트코드(Program.class) -> 윈도우JVM(윈도우에서 실행) or 리눅스JVM(리눅스에서 실행) or ...
- 자바 소스 코드를 작성하면 컴파일러가 컴퓨터가 이해할 수 있는 언어로 번역해 준다. 컴파일러는 확장자가 .class로 되어 있는 바이트 코드를 만든다. 그 후 JVM(Java Virtual Machine)이 바이트 코드를 읽어 운영체제에 맞게 명령어를 실행해 준다.
JDK와 JRE
JDK(Java Development Kit)
- Java를 개발함에 있어 필요한 모든 집합체
- JRE를 포함하고 있으며, 그 외에 javadoc, 컴파일러(javac) 를 포함
JRE(Java Runtime Environment)
- Java를 실행함에 있어 필요한 환경을 포함
- JVM을 포함하고 있으며, 그 외에 java class library, java 명령어들을 포함
JVM
JVM(Java Virtual Machine)
- Java 소스 코드로부터 생성되는 binary 파일 (.class) 을 실행시킬 수 있음
- JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존
- Java로 작성된 프로그램의 메모리 관리 및 최적화를 수행
- 한 번 컴파일된 파일은 어떤 운영체제에서도 같은 JVM환경에서는 동일하게 동작할 수 있음(WORA)
💡 JDK > JRE > JVM
JAVA 활용
- 웹 애플리케이션
- 모바일 애플리케이션
- 엔터프라이즈 애플리케이션
- 웹/앱 서버
...
Java Platform
- Java SE(Standard Edition): 기본 개발 환경
- Java EE(Enterprise Edition): 서버 기반 프로그램 개발 환경
- Java ME(Micro Edition): 모바일, 임베디드 시스템 개발 환경
package org.example; //비슷한 성격의 Class(.java) 파일들을 모아둔 폴더
public class Main { //Main이라는 이름의 클래스로 여러 함수를 모아놓는 단위
public static void main(String[] args) { //main methon로 Java application이 제일 먼저 실행하는 메서드(Java 규약)
System.out.println("Hello World");
}
}