java 8

[Eclipse] Solution to 「The default superclass, "jakarta.servlet.http.HttpServlet", according to the project's Dynamic Web Module facet version (5.0), was not found on the Java Build Path.」

이클립스 2023-06 버전에서 Dynamic Web Project를 생성하고 런타임으로 Tomcat 10.1을 사용하는 프로젝트에서 JSP 태그를 작성하면 제목과 같은 오류가 생기는데, 해결 방법을 적어둡니다. 다른 버전도 그런지는 모르겠습니다. 아마 톰캣 버전에 따라서 JSP 관련 클래스의 네임스페이스가 javax에서 jakarta로 바뀌어서 그런 걸로 보입니다. 프로젝트 속성(Properties)에서 Project Facets 화면에서 Dynamic Web Module 항목의 버전을 6.0으로 변경하고 Apply and Close 버튼을 누르면 해결됩니다. 재밌는건 이렇게 해서 오류 마커가 사라지면 모듈 버전을 5.0으로 되돌려도 오류가 다시 생기지 않습니다. 알다가도 모르겠네요

Java EE(Jakarta EE) vs. Spring 프레임워크

Spring은 Java EE를 대체하기 위해 나온 기술입니다. Java EE에는 JSP, JSTL, Servlet, EJB, JavaMail, JTA, JMS, JPA 등의 하위 기술들이 포함되어 있는데, 각각이 Spring Framework와 어떻게 대응되는지 궁금해져서 오랜만에 글을 쓰게 되었습니다. 추가로 Java EE와 Spring의 특징과 차이점도 함께 정리하겠습니다. Slideshare에서 좋은 자료를 발견해서 원본 주소를 남기고 가져와 보았습니다. 2011년 자료이지만 기술의 발달 과정을 이해하는 데는 옛날 자료도 도움이 많이 된다고 생각합니다. 1. 특징 비교 의존성 주입 JSR(Java Specification Requests) CDI(Contexts and Dependency Injec..

[Java] 비트 연산자(Bitwise Operators) 정리

1. 논리곱(AND) & 입력 비트가 모두 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a & 2; // 00001010 // 00000010 // 00000010 System.out.println(b); // 2 2. 논리합(OR) | 입력 비트 중 한 개 이상이 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a | 2; // 00001010 // 00000010 // 00001010 System.out.println(b); // 10 3. 배타적 논리합(eXclusive OR) ^ 두 입력이 서로 다른 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a ^ 2; // 00001010 // 000000..

[소프트웨어공학] 제10장 유스케이스 다이어그램 및 명세

1. 단원 요약 개요 UML (Unified Markup Language) 1.0: OMG, 1997 UML 2.5: OMG, 2015 4+1 View Usecase View: 유스케이스 다이어그램 Logical View: 상호작용 다이어그램(시퀀스 다이어그램, 통신 다이어그램) Process View: 액티비티 다이어그램 Development View Physical View UML 2.5 다이어그램 유스케이스 다이어그램: 구조적, 행위적 측면을 모두 표현한다. 구조 다이어그램 클래스 다이어그램 객체 다이어그램 패키지 다이어그램 컴포넌트 다이어그램 배포 다이어그램 행위 다이어그램 액티비티 다이어그램 상태머신 다이어그램 상호작용 다이어그램 시퀀스 다이어그램 통신 다이어그램 액터: 막대인간, 아이콘, 스테..

[Java] 제7장 java.lang 패키지

1. 단원 요약 java.lang 패키지는 프로그래밍에 필수적인 기본 클래스들을 제공한다. 별도로 import 하지 않아도 자동으로 포함된다. 포함되는 클래스들은 다음과 같다. 최상위 클래스 Object 문자열 처리용 String, StringBuffer 프로세스/스레드 제어용 Process, Runtime, Thread, ThreadGroup 수학 계산용 Math, StrictMath 예외처리용 Exception, Throwable, Error 포장 클래스(Wrapper Class) Boolean, Character, Byte, Short, Integer, Long, Float, Double 시스템 접근용 System 패키지/클래스 제어용 Package, Class, ClassLoader Object ..

[Java] 제5장 제네릭과 람다식

1. 단원 요약 다양한 타입이나 객체에 대해 동작하게 만든 클래스를 제네릭 클래스 또는 제네릭이라고 부른다. 제네릭을 정의할 때 다양한 타입 파라미터를 선언하고, 사용할 때 필요한 타입을 지정한다. 컴파일러를 통한 타입 검사가 가능해진다. 명시적 형변환이 불필요해진다. 자료형 매개변수(타입 파라미터)는 클래스 식별자 뒤에 로 표시한다. 타입 파라미터는 필드의 타입이나 반환형으로 사용된다. 타입 매개변수 없이 사용되는 제네릭 타입을 로우(raw)타입이라 한다. Raw 타입 클래스 내부에서 사용되는 모든 타입이 java.lang.Object로 간주되어 실행된다. 람다식(lambda expression)이란 파라미터를 입력받아 결과값을 반환하는 코드이다. 람다식은 메소드와 비슷하나, 이름이 없고, 메소드 내부..

[Java] 제2장 Java 기본 문법

1. 단원 요약 /**으로 시작하는 주석은 javadoc 문서이다. 소스코드 맨 위에 작성하며, 클래스에 대한 설명을 기술한다. 달러 사인($)도 식별자로 사용할 수 있다. 고정값(상수값)을 "리터럴"이라 부른다. 식별자는 camel case로, 클래스 이름은 pascal case로 표현한다. (camelCase/PascalCase) 상수는 대문자 snake case로 표현한다. (SNAKE_CASE) 특정 자료형 값을 저장하는 변수를 기본형 변수라 한다. (boolean/byte=char/short/int/float/long/double) char 타입은 2바이트로써, '\u0000'부터 '\uffff'까지 표현할 수 있다. 객체가 위치한 주소를 저장하는 변수를 참조현 변수라 한다. 작은 자료형에서 큰..

[Java] 제1장 Java와 객체지향 프로그래밍

1. 단원 요약 특정 클래스의 인스턴스를 객체라 한다. 기존 클래스를 이용하여 새 클래스를 정의하는 것을 상속이라 한다. 기존 클래스는 슈퍼 클래스, 베이스(기반) 클래스, 상위 클래스, 부모 클래스 등으로 부른다. 상속을 통해 정의된 클래스는 서브 클래스, 파생 클래스, 하위 클래스, 자식 클래스 등으로 부른다. 2. 연습문제 요약 Java에는 포인터 관련 문법이 없다. JVM, System Library등을 통틀어 "Java 플랫폼"이라 한다. Java 소스 파일에 public 클래스가 존재하면, 해당 파일의 이름은 그 클래스의 명칭과 동일해야 한다. Java 소스 파일에 다수의 클래스가 존재하면, 컴파일 시 각 클래스에 대응하는 다수의 .class 파일이 생성된다.