본문 바로가기

Java관련/Java20

Java Secure coding 자바에는 보안 코딩 지침이 있습니다. 보안 코딩 지침 참고 자료를 소개하는 글을 작성합니다. 1. Oracle공식문서 내용 목차는 아래와 같이 구성되어 있습니다. 소개 0 기초 1 서비스 거부 2 기밀 정보 3 주입 및 포함 4 접근성 및 확장성 5 입력 검증 6 가변성 7 객체 구성 8 직렬화와 역직렬화 9 액세스 제어 결론 참조 부록 A: JNI의 방어적 사용 1-1 Oracle 유튜브 내용 위 공식문서 프리젠테이션 유튜브입니다. 심심할 때 틀어두고 대강의 내용을 파악하기에 좋습니다. 2. 자바 시큐어 코딩 가이드라인, 책 번역서로 원서 추천하는 리뷰가 있었습니다. 3. 그외 OWASP 웹 애플리케이션 관리할 때 보안 취약성 파악하는 기준 10가지를 제공합니다. 전체적으로 개발 시 유의해야할 보안 사.. 2023. 4. 17.
[프로젝트]exception 을 static으로 만든 이유 보호되어 있는 글 입니다. 2023. 4. 7.
필요없는 검사 예외 사용은 피하라 이펙티브자바 예외파트 아이템을 정리한 내용입니다. 아이템71 필요없는 검사 예외 사용은 피하라 검사 예외 검사 예외는 처리하여 안전성을 높일 수 있기 때문에 잘 사용하면 API와 프로그램의 질을 높인다. 검사 예외를 사용하는 경우 API를 제대로 사용해도 발생할 수 있는 예외 프로그래머가 의미 있는 조치를 취할 수 있는 경우 검사 예외의 한계 검사 예외는 호출자가 처리해야하는 강제성을 지니기 때문에 부담을 주게 된다. 검사 예외를 던지는 메서드는 스트림 안에서 직접 사용할 수 없다. 특히 메서드가 단 하나의 검사 예외만 던질 때 부담이 크다. 그 예외 하나 때문에 API 사용자는 try블록을 추가하고 스트림에서 사용하지 못하게 된다. 이런 상황에선 검사예외를 안 던질 방법이 없는지 고민해보자 검사 예외 .. 2023. 1. 15.
Java 제네릭 Java 제네릭 학습주제 용어 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure : 바이트코드 보면서 개념적으로 이해 제네릭 메서드나 클래스에 컴파일시 타입 체크를 해주는 기능 제네릭 아닌 것은 컴파일시에 타입체크를 안하나? 객체 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높히고 타입 캐스팅을 제거하여 형변환을 생략할 수 있습니다. 용어 용어 영문 예 매개변수화 타입 parameterized Type List 제네릭 타입 generic type List 정규 타입 매개 변수 formal type parameter E 실제 타입 매개 변수 actual type parameter String 원시 타입(로 타입) raw type List 비한정.. 2022. 11. 28.
Java 애너테이션 애너테이션 학습주제 애너테이션 정의하는 방법 @Retention @Target @Documented 애너테이션 프로세서 애너테이션 애너테이션은 주석이라는 뜻 애너테이션과 일반적인 주석이 다른 점 일반 주석은 사람을 위한 것이고, 애너테이션은 컴파일러를 위해 작성한 주석 문법 오류를 체크할 수 있도록 힌트 제공. 예) @Override 빌드 시 코드 자동 생성. 예) 롬복 라이브러리 런타임 시점에 참고해서 특정 동작을 하도록 할 때 사용. 예) 스프링의 aop 표준 애너테이션 자바에서 기본으로 제공하는 애너테이션 자바코드 작성시 사용되는 애너테이션 메타 애너테이션 : 애터테이션을 정의할 때 사용하는 애너테이션. 애너테이션에 붙이는 애너테이션 @Retention 애너테이션이 유지되는 기간을 지정하는데 사용된.. 2022. 11. 23.
Java enum Java enum enum을 잘 사용해보고 싶어서 여러 자료를 많이 보았습니다. 남궁성님의 자바의 정석, 백기선님의 유튜브, 이동욱님의 enum 활용법 정리를 통해 그동안 가진 enum에 대한 모호함이 많이 해소되는 느낌이였습니다. 아직도 명확하지 않은 것들은 차차 해결해보려고 합니다. 학습주제 Java enum 이란 객체의 주소가 저장된 상수 상태와 행위를 한 곳에서 관리 type safety 변경 시 재컴파일 불필요 enum 정의하는 방법 java.lang.Enum enum이 제공하는 메소드 (values()와 valueOf()) EnumSet Java enum 이란 자바 Enum은 상수를 클래스로 정의해서 서로 관련된 상수를 편리하게 선언하기 위한 것으로 열거형이 갖는 값과 타입을 관리하기 때문에 .. 2022. 11. 4.
Java 클래스 Java 클래스 학습 주제 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 클래스, 객체, 인스턴스 클래스란 객체를 정의해놓은 것 객체의 설계도, 틀 클래스는 객체를 생성하는데 사용 객체란 사전적 정의는 실제로 존재하는 것 클래스에 정의된 내용대로 메모리에 생성된 것 객체는 인스턴스를 대표하는 포괄적인 의미 인스턴스 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 인스턴스는 어떤 클래스로 만들어진 것인지 강조하는 구체적인 의미 예를 들면, Tv클래스로부터 만들어진 객체를 Tv클래스의 인스턴스라고 한다. 클래스 정의하는 방법 객체는 속성과 기능의.. 2022. 9. 30.
Java 예외 처리 자바 예외처리 학습 주제 Exception과 Error의 차이는? 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 RuntimeException과 RuntimeException가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 Exception과 Error의 차이 에러 error 예외 exception Error(오류)는 시스템에 비정상적인 상황이 생겼을 때 발생합니다. 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이고 프로그램의 비정상적인 종료를 개발자가 미리 예측하여 처리할 수 없습니다. 예를 들면 메모리 부족(OutOfMemoryError), StackOverFlowError 등이 있습니다. Exception(예외)는 개.. 2022. 9. 29.
Java static, static final, final 차이 Java static, static final, final 차이 자바의 static, static final, final은 종종 헷갈릴 수 있는 제어자로 코드를 통해 어떻게 다른지 확인해보겠습니다. 예시 코드 public class Account { static double rate = 1.5; static final int odLimit = 1000; final int accountId; public Account(int id) { accountId = id; } public static void main(String[] args) { Account first = new Account(123); Account second = new Account(456); // The following prints 1.. 2022. 9. 15.
자바 상속의 메모리 할당 과정 자바 상속의 메모리 할당 과정 최근 자바의 정석 상속 부분을 다시 읽으며 이해되지 않은 문장들이 있었고 이에 자바 상속의 메모리 할당 과정에 대해 조사하게 되었습니다. 이해한 내용을 바탕으로 제 생각이 더해진 내용을 적어 봅니다. 추가적으로 도움이 될만한 자료나 방향이 다른 내용은 댓글이나 방명록에 남겨주시면 감사하겠습니다 :) 아래 자바 코드가 메모리에 어떤 순서로 어디에 할당되는지 알아보도록 하겠습니다. public class Person { public int age; public String name; public Person() { System.out.println("parent class"); say(); } public void say() { System.out.println("Someone.. 2022. 9. 5.
Java 상속, 오버라이딩, 다이나믹 메소드 디스패치 목차 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 클래스 재사용 방법 상속 포함 Composit : 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언 자바의 상속(Inheritance) 상속을 받는 것은 조상 클래스를 확장(extend)한다는 의미로 해석할 수 있습니다. 기존 클래스를 재사용하여 새로운 클래스 작성 코드 중복은 일관성 유지를 어렵게 해 유지보수가 어려워지게 하는 요소입니다. 같은 내용의 코드를 부모 클래스 한 곳에서 관리하므로 공통된 내용이 변경될 때 부모 클래스 하나만 변경할 수 있습니다. 코드 재사용 코드 중복 제거 조상 클래스가 변경되면 자손 클.. 2022. 8. 29.
JVM과 자바 실행 과정 알아보기 자바 소스 파일(.java)을 실행하는 과정을 살펴보면서 JVM의 각 항목에 대해서 알아보았습니다. JVM에 대해 조사할 때 소제목으로 알아보는 것보다는 자바 실행 과정이라는 키워드로 접근하는 것이 수월했습니다. 먼저 java 파일의 실행과정을 간단하게 살펴보고 JVM의 각 항목에 대해 적어보겠습니다. .java 파일의 실행과정 (image : simplesnippets.tech) 1 컴파일 타임 🔷 1단계 : 코드 컴파일 javac abc.java 자바 컴파일러 javac를 통해 .java 파일이 바이트코드로 된 .class파일로 변환됩니다. 자바 컴파일러는 구문오류, 컴파일시간 오류를 확인하고 자바코드를 바이트코드로 변환합니다. 자바코드를 바이트코드로 변환할 때 발생한 에러를 컴파일 타임 에러라고 합.. 2022. 8. 7.