1. Java 프로그래밍

  • java는 객체지향 프로그래밍 언어로, 한 번 작성하면 어디서나 실행할 수 있는(WORA) 특징을 가진다
  • JVM(Java Virtual Machine) 위에서 실행되기 때문에 운영체제에 독립적
  • 다양한 라이브러리, 자동 메모리 관리(Garbage Collection), 강력한 보안성 등의 이유로 웹, 앱, 서버, 임베디드, 기업용 시스템 등 다양한 환경에서 널리 사용되고 있다

    📌 가비지 컬렉터 정리글

Java의 장/단점

✅ Java의 장점과 단점

구분 항목 설명
장점 운영체제 독립성 JVM 위에서 실행되므로 다양한 운영체제에서 동일하게 실행 가능
  객체지향 언어 캡슐화, 상속, 추상화, 다형성 등 객체지향 개념이 잘 적용됨
  자동 메모리 관리 JVM의 가비지 컬렉터(GC)가 자동으로 메모리 회수 처리
  오픈소스 OpenJDK와 다양한 오픈소스 라이브러리 활용 가능
  멀티스레드 지원 스레드 생성 및 제어를 위한 API 제공으로 멀티스레드 구현 용이
  동적 로딩 지원 클래스가 필요한 시점에 동적으로 로딩되어 유연한 구조 제공
단점 상대적으로 느린 실행 속도 JVM의 중간 단계 처리로 인해 C/C++보다 느릴 수 있음
JIT 컴파일러 등으로 많이 개선됨

자바의 데이터타입

  • 기본 자료형과 참조 자료형 으로 나눌 수 있다
자료형 종류 저장 위치 저장 방식
기본 자료형 Stack 값 자체를 저장함
참조 자료형 Stack + Heap 참조 변수는 Stack에, 실제 객체는 Heap에 저장됨

기본 자료형(8)
값 자체를 저장하며, stack 메모리 영역에 저장한다

  • 정수형: byte, short, long
  • 실수형: float, double
  • 논리형: boolean
  • 문자형 char

참조자료형
객체의 주소를 참조하며, 객체는 heap 메모리에 저장한다

종류 예시 설명
클래스 String, 사용자 정의 클래스 등 new로 생성하여 사용
배열 int[], String[] 등 같은 타입의 데이터를 연속 저장
인터페이스 Runnable, Comparable 등 클래스가 구현해야 하는 메서드 집합 정의
열거형(enum) enum Color { RED, BLUE } 고정된 상수 집합 정의

2. Java SE 와 Java EE

  • java SE
    • 기본적인 java프로그래밍 기능을 제공
    • 일반적으로 소규모 웹 어플리케이션 개발에 사용함
  • java EE
    • java SE를 기반으로 확장된 기능을 제공하는 엔터프라이즈 에디션
    • 대규모 기업 어플리케이션 개발에 사용되는 다양한 고급 기능을 제공함

3. Java와 C

  • Java객체지향 언어이나, C언어는 절차지향 언어이고 ,C++은 객체와 절차를 모두 지향한다
  • JavaGC(가비지컬렉션)이 메모리를 관리해주나, C/C++은 개발자가 직접 메모리를 할당하고 해제해야한다
  • JavaJVM 위에서 실행되어 운영체제에 독립적이지만, C/C++은 운영체제에 의존적이다

4. Java8

  • java에 함수형 프로그래밍이 처음 도입된 버전
  • 새롭게 추가된 기능으로 Stream API, Lamda표현식, Method Reference, Default Method,Optional Class 등이 있다

Optional 클래스

  • NullPointerException을 방지하기 위해 사용되는 컨테이너 객체로, 값이 있을 수도 있고 없을 수도 있는 객체를 감싸는 Wrapper 클래스
  • 주로 반환 값에 null이 올 수 있는 경우 사용
  • isPresent(), orElse(), ifPresent() 등으로 안전하게 처리

Optional 클래스는 null 값을 직접 다루지 않기 위해 사용하는 컨테이너 객체이다
값이 없을 수도 있다는 걸 명시적으로 표현해서 NullPointerException을 방지할 수 있게 도와준다

Stream API

  • 컬렉션의 데이터를 함수형 방식으로 처리할 수 있는 기능

Stream API는 컬렉션 데이터를 선언적 방식으로 처리할 수 있게 해준다.
반복문 없이 필터링, 변환 등을 함수형 스타일로 작성할 수 있어 가독성과 유지보수성에 좋다

Lambda Expression

  • 익명 함수를 간결하게 표현하는 문법으로, 함수형 인터페이스의 인스턴스를 쉽게 생성할 수 있다

람다 표현식은 Java에서 함수를 간단하게 표현하는 방법으로, 함수형 인터페이스를 구현할 때 사용된다.
코드가 간결해지고 익명 클래스보다 훨씬 보기 쉽다

(매개변수) -> { 실행문 }

용어 정리

객체 지향 (Object-Oriented)

  • 현실 세계의 개념을 객체로 추상화하여, 객체 간의 상호작용을 통해 프로그램을 구성하는 프로그래밍 패러다임

댓글남기기