자바의 력사는 사실 꼼수의 력사라고 봐도 무방할 정도로

어이가 안드로메다를 넘어 마젤란 은하까지 가버리는 수준이 종종 있다.


1. 제네릭 (Java 5)

JVM 바이트코드 레벨에서 변경된 것 아무것도 없음 (...)

이것들아 M$ 애들은 C#에서 제네릭 지원한다고 바이너리 새로 팠단 말이다.


2. 문자열 더하기 퍼포먼스 (Java 7~8)

문자열 더하기와 StringBuilder.append 퍼포먼스가 심각하게 차이가 났다. 특히 메모리 사용량이...

다행히 Java 7 중간쯤 언젠가부터 문자열 더하기가 내부적으로 String.concat()을 사용하게 바뀜


3. 문자열 switch...case (Java 8)

바이트코드 까보면 case에 들어간 문자열을 별도 if문으로 비교해서 int로 변환한 다음 switch...case를 돌림


4. 문자열 직접 비교 (값에 대한 == 지원) (Java 9)

문자열 비교시 완벽히 같은 문자열이면 완벽히 같은 hashCode가 나온다는 것을 이용해서 우회시킴

사실 이건 String.intern() 걷어내고 문자열 deduplication 구현하다가 덤으로 얻어걸린것 같다...