Java 버전별 변천사 ( Java 6 ~ )
·
SW 공학 & 프로그래밍 언어/Java
Java는 오랜 시간 동안 발전을 거듭해 왔습니다. 처음에는 단순한 객체지향 언어였지만, 점점 더 강력한 기능을 갖추면서 다양한 환경에서 활용될 수 있도록 변화해 왔습니다. 특히 LTS(Long-Term Support) 버전은 기업에서 안정적으로 사용할 수 있도록 지원됩니다. 이 글에서는 Java 6부터 주요 변화를 실제 개발 과정에서 마주할 수 있는 이야기로 풀어보겠습니다.1. Java 6 ~  주요 변화 한눈에 보기버전출시주요변화추가된 이유이후 발전Java 6(2006)JVM 성능 개선웹 서비스 강화실행 속도 향상기업용 웹 서비스 지원RESTful API 발전Java EE → Jakarta EE 변경Java 7(2011)코드 가독성 향상병렬 처리 지원멀티코어 환경 증가예외 처리 개선Java 8의 St..
자바의 특징
·
SW 공학 & 프로그래밍 언어/Java
1. 플랫폼 독립성바이트코드 형태로 변환된 후 JVM(Java Virtual Machine)에서 실행되므로, OS와 상관 없이 동작할 수 있다.바이트코드는 xxx.java 파일을 컴파일한 xxx.class 형태의 클래스 파일이다. 이게 왜 특징이냐?라고 생각이 들텐데?! 자바 이전의 언어 소스들은 각 언어 체계에 따라 컴파일러가 있고 컴파일러를 통해 어셈블리어로 변환 한다.변환된 어셈블리어를 기계가 읽을 수 있게 어셈블러를 통해 기계어로 변환하여 하드웨어가 읽은 수 있게된다. 여기서 기존의 소스 코드 공유 방식에서 자바와 차이가 나타난다. 하드웨어, 제조사마다 기계어의 설계가 다르다는 것이다.예를 들어, A라는 장비에 B 운영체제에서 C언어로 개발한 소스(C)가 있다.이 소스를 A'라는 장비에 B' 운영..
클래스 초기화 순서
·
SW 공학 & 프로그래밍 언어/Java
문득, JVM구조를 공부하다가 초기화 순서가 정확히 어떻게 진행 될까? 생각해본적이 있다.언제 초기화 되는걸까?인스턴스를 생성할 때(new 객체 생성)클래스의 정적 메소드를 호출할 때 클래스가 초기화됨클래스의 정적 변수 값이 할당되거나 사용될 때초기화 순서는?정적 변수 초기화필드가 선언된 순서대로 초기화정적 블록 실행static {}간혹 정적 블록이 먼저 실행될 수도 있음인스턴스 변수 초기화인스턴스 변수가 선언된 순서대로 초기화됨인스턴스 블록 초기화{}생성자 실행예제class Example { static int staticVar = initializeStaticVar(); static { System.out.println("정적 블록 실행"); } int instanc..
OpenJDK vs Oracle JDK 차이점
·
SW 공학 & 프로그래밍 언어/Java
📌 핵심 내용OpenJDK와 Oracle JDK는 기본적으로 같은 소스 코드 기반이지만, 라이선스, 지원 정책, 성능 튜닝 기능에서 차이가 있음.기업 환경에서는 비용과 지원 여부를 고려하여 선택해야 함.1. OpenJDK와 Oracle JDK는 같은 JDK일까?자바 개발을 할 때 JDK를 선택해야 하는데, 가장 많이 사용되는 것은 OpenJDK와 Oracle JDK입니다. 이 둘은 같은 소스 코드를 기반으로 하지만 몇 가지 중요한 차이점이 있습니다.OpenJDK vs Oracle JDK 비교구분OpenJDKOracle JDK소스 코드오픈소스 (GPLv2 + Classpath Exception)OpenJDK 기반, 일부 상업적 기능 포함라이선스무료상업적 사용 시 유료 (Oracle 구독 필요)업데이트 지..
[JAVA] JCP, JSR, TCK란? 자바 표준의 개발 과정과 역할
·
SW 공학 & 프로그래밍 언어/Java
자바(Java)는 단순한 프로그래밍 언어가 아니라, 강력한 생태계를 구축한 플랫폼입니다. 이 플랫폼이 발전하고 표준이 유지되는 과정에서 중요한 역할을 하는 것이 바로 JCP(Java Community Process), JSR(Java Specification Request), TCK(Technology Compatibility Kit)입니다. 이번 글에서는 자바 기술이 표준화되는 과정과 그 중심에 있는 JCP, JSR, TCK의 역할을 정리하겠습니다.1. JCP란? (정의 및 역할)JCP(Java Community Process) 정의JCP는 자바 기술 사양을 개발 및 개정하기 위해 누구든지 참여할 수 있는 공개 커뮤니티입니다. 1998년 Sun Microsystems(현 Oracle)에 의해 만들어졌으..
테스트 주도 개발(TDD: Test Driven Development)
·
SW 공학 & 프로그래밍 언어/SW 방법론
시리즈 2025.03.06 - [SW 방법론] - 테스트 주도 개발(TDD: Test Driven Development)2025.03.13 - [SW 방법론] - TDD 시나리오 OOP 적용 예시 TDD가 뭘까?✅ 소프트웨어 개발방법론 중 하나이며, 매우 짧은 개발 사이클을 반복하는 SW 개발 프로세스입니다.✅ TDD는 "테스트 → 실패 확인 → 최소한의 코드 작성 → 테스트 통과 → 리팩토링" 순으로 진행하는 개발 방식✅ 불필요한 코드 작성을 막고, 기능이 정상적으로 동작하도록 보장하는 방법TDD 사이클먼저, 개발자는 요구사항을 검증하는 케이스를 작성합니다.이후에 테스트 케이스를 통과하기 위한 최소한의 코드를 생성합니다.작성한 코드는 리팩토링하는 과정을 반복합니다.쉽게 말해서 '선 테스트 코드 작성 ..
쉬운, 클래스와 객체 개념
·
SW 공학 & 프로그래밍 언어/Java
클래스? 객체?클래스는 객체를 생성하기 위한 메타데이터(상태[멤버변수]와 동작[메소드])를 정의한 템플릿객체는 실제 메모리에 할당되어 동작하는 클래스의 인스턴스 상태(인스턴스화 또는 객체화) // 클래스 메타데이터 정의class Car { String brand; void drive() { System.out.println(brand + " 자동차가 주행 중입니다."); }}public class Main { public static void main(String[] args) { Car myCar = new Car(); // 객체 생성 myCar.brand = "Hyundai"; // 상태 저장 myCar.drive(); /..