Java를 하는 개발자로써 개발 환경마다 java의 버전이 다르다면, 이에 대해서 정확하게 구분할 줄 알아야합니다. 그래서 java 버전에 따라 어떤 차이점이 있는지 구분해 보았습니다. 어떤 서비스를 많이 사용하는가? jetbrain에서 조사한 바에 따르면 java8이 아직 많은 개발에 사용되고 있지만 21년 기준 java 17의 사용이 월등히 많이 늘었다는 것을 비교해 볼 수 있습니다. (참고 : jetbrain 분석 ) 그리고 java의 서비스 종료 기간도 확인해보면 8은 2030까지 지원하고, 17이 8과 비슷한 것을 알 수 있습니다. 아마 서비스 기간때문에 더 8과 17을 많이 사용하지 않을까 생각합니다. 그리고 최근 17을 많이 사용하게 된 이유는 2022년에 출시된 Spring Boot 3.0..
Casting은 변수가 원하는 정보를 모두 갖고 있는 것을 의미합니다. 너무 추상적인가요? 예를 들어 int a = 0.1; int b = (int) true; 위 처럼 int에 0.1을 할당하면 에러가 납니다. 이는 int에 0.1을 할당할 수 없으며, true와 같은 boolean 타입을 int 로 캐스트가 불가하다는 것을 의미합니다. 즉, int라는 클래스는 4byte 크기의 메모리에 넣을 수 있는 정수만 가능하다는 것입니다. 그럼 캐스트는 왜 사용하는 것일까요? 첫 번째는 다형성입니다. 오버라이딩된 함수를 분리해서 활용할수 있습니다. 두 번째는 상속입니다. 캐스팅을 통해 범용적인 프로그래밍이 가능합니다. 그럼 형변환의 종류에 대해 알아보겠습니다. 간단하게 말하면, 상속 관계에 있는 부모와 자식 클..
모든 클래스들의 최상위 클래스 Object 클래스에 대해서 알아보았습니다. Object 클래스 메소드 즉, 모든 클래스를 사용할 때 Object클래스를 상속받습니다. 이런것들을 컴파일러가 처리해주고 있습니다. 그럼 int와 같은 것들도 Object 클래스를 상속받을까요?( 접은 글을 확인해보세요 ) 더보기 그렇지 않습니다. Java의 모든 클래스는 암시적으로 또는 명시적으로 Object 클래스를 상속받습니다. 하지만 int는 기본 자료형으로 값을 저장하기에 객체로 다뤄지지 않고 직접 값을 처리할 때 사용하기 때문입니다. 어떤 패키지안에 있는 클래스일까? 바로 java.lang 패키지입니다. java.lang.Object 클래스는 필드를 가지지 않고, 11개의 메소드로 구성되어있습니다. 메소드 예제 그 중..
정의 직렬화란 java code처럼 사람이 읽기 좋은 형태인 코드를 바이트 코드로 바꾸는 것을 의미합니다. 직렬화 방법 데이터를 전송할 때, java code로 만들어진 데이터를 다른 컴퓨터로 보낸다고 가정하겠습니다. 이런 데이터는 다른 컴퓨터에 도착합니다. 하지만 모든 PC의 OS는 서로 다른 가상 메모리를 가집니다. 따라서 값을 바로 저장하는 Primitive 타입이 아닌 Reference 타입은 Serializable 인터페이스로 구현을 해야합니다. 이렇게 만든 바이트 코드는 데이터베이스나 파일과 같은 외부 저장소에 저장하고 다른 컴퓨터에 도착하게 되면 그 데이터를 역직렬화를 통해 자바 객체로 반환해서 JVM 메모리에 적재하게 됩니다. 효율적인 직렬화란? 하지만 이러한 직렬화에도 역사적인 문제점이 ..