Web Server와 WAS 웹 서버(Web Server)WAS(Web Application Server)역할클라이언트로 부터 HTTP 요청을 받아 정적 콘텐츠 제공동적 콘텐츠 생성 및 비즈니스 로직 처리기능파일 시스템에서 직접 파일 제공(HTML 등)데이터베이스와 상호 작용, 애플리케이션 로직 실행예시Apache HTTP Server, NginxApache Tomcat, JBoss, Jeus웹 서버는 주로 정적 콘텐츠를 제공하는 데 최적화된 서버이다. 반면 WAS는 웹 애플리케이션의 복잡한 요구사항을 처리하기 위해 등장한 서버로 동적인 콘텐츠 생성과 비즈니스 로직 실행을 담당한다. WAS는 데이터베이스와 상호작용하며 트랜잭션 처리와 같은 복잡한 비즈니스 요구를 충족시킬 수 있다. WAS = Web Se..
자바의 컬렉션 프레임워크는 자료 구조를 다루기 위한 다양한 인터페이스의 모음이다. List, Set, Queue와 같은 인터페이스로 구성되어 있다. 이번 글에서는 컬렉션 프레임워크의 List 인터페이스, 하위 클래스인 ArrayList, LinkedList에 대해 살펴보고자 한다.Java.util.ListList는 순서가 있고 중복을 허용하는 자료 구조이다. 배열도 마찬가지로 순서가 있고 중복을 허용한다. 그러나 자바에서 배열을 사용할 때 배열의 크기를 미리 선언해야 한다. 선언 후 크기를 변경 할 수 없고 고정된 크기를 가진다. 이와 달리 List는 크기를 동적을 변할 수 있다. List 인터페이스에는 ArrayList와 LinkedList와 같은 구현 클래스가 있다. 위 그림을 살펴보면 ArrayLi..
프로그래밍에서 enum은 여러 항목을 나열한 집합, 즉 미리 정의된 상수들의 묶음을 말한다. 이 글에서는 enum의 개념과 필요성 그리고 enum을 활용한 객체 지향적인 코드의 장점을 살펴보고자 한다. 문자열과 타입 안전성자바에서 Enum Type은 왜 제공할까? 아래 예제를 통해 확인해 보자.회원등급은 'BASIC', 'GOLD', 'DIAMOND' 총 3등급이 있다. 개발자는 회원 등급에 다른 할인율을 제공하기 위해 아래와 같은 코드를 작성했다.public class DiscountService { public int discount(String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { ..
래퍼 클래스 (Wrapper Class)래퍼 클래스는 기본형의 객체 버전이다. 자바는 기본형 데이터를 객체로 다룰 수 있는 래퍼 클래스를 제공한다. 기본형 (Primitive Type)래퍼 클래스 (Wrapper Class)byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean 기본형의 한계와 래퍼 클래스의 필요성자바에서 래퍼 클래스는 왜 사용하는 것일까?자바는 객체 지향 언어이다. 그러나 자바에도 객체가 아닌 타입이 존재하는 데 바로 기본형(Primitive type)이다.기본형의 한계는 다음 두가지가 있다. 첫째, 객체가 아니다. 둘째, 기본형은 항상 값을 가진다.첫째로 기본형은 객체가 아니다. 단순한 ..
String 클래스 자바에서 문자를 다루는 타입은 Char, String이 있다.기본형 Char는 문자 하나를 다룰 때 사용한다. 여러 문자를 사용하려면 char[]를 사용해야 하는데 편의성을 위해 자바에서는 String 클래스를 제공한다.String 클래스 구조는 다음과 같다.public final class String { // 문자열 보관 private final char[] value; // 자바 9 이전 private final byte[] value; // 자바 9 이후 // 여러 메서드 public String concat(String str) {...} public int length() {...} ...}자바 9 이후로 String 클래스는 ..
자바에서 제공하는 많은 클래스들은 불변 객체로 설계되어 있다. 불변 객체 개념은 무엇이고 자바에서 어떻게 쓰이는지 살펴보자. 불변객체(Immutable Object)불변 객체는 객체가 생성된 후 내부 상태가 절대로 변하지 않는 객체를 말한다. 자바에서는 String, Integer 같은 클래스들이 대표적인 불변 객체이다. 공유 참조 문제자바는 항상 값을 복사해서 대입한다.기본형 (Primitive Type)참조형 (Reference Type)값 복사참조값 복사기본형은 값을 복사해서 대입하기 때문에 각각 별도의 메모리에 존재하게 된다. 이와 달리 침조형은 객체의 메모리 주소(참조값)를 복사한다. 따라서 같은 객체를 여러 참조형 변수가 참조할 수 있으며, 이로 인해 하나의 변수가 객체 값을 변경하게 되면 다..