Javaバージョンのプロパティ(1.7~13)
Java 7
1. ETC11.07.07リリース 2.Stringをswitch文パラメータとして許可する
1. ETC42014.03.18リリース CompletableFuture Repeating Annotation 2.Interface Default Method
3-1. 既存
下図に示すようにramda式を実現するには抽象的な方法が必要である.
小包
NullPointerException(NPE)の使用は避けてください.
methoddescget()はオブジェクトを返します.NoSuchElementExceptionRElse(T other)オブジェクトが空の場合、他の戻りオブジェクトが空の場合にのみElseGet(Supplierother)オブジェクトが呼び出されるため、性能的にはElseThrow(Supplier異常Supplier)オブジェクトよりも優れているか、またはElseThrow(Supplier異常Supplier)
追加されたAPIDescjava.time.LocalDate日付.タイムゾーンXjavaを使用します.time.LocalTime時間タイムゾーンXjavaを使用します.time.LocalDataTime日付と時刻.タイムゾーンXjavaを使用します.time.ZonedDateTime日付と時間.タイムゾーンOjavaを使用します.time.DateTimeFormatterjava.時間のフォーマットjava.time.Duration時間javaを秒/ナノ秒単位で測定した.time.Period時間javaを年/月/日単位で測定します.time.音声チューナーの日付の調整
5-1. 日付出力
Perament Heap領域を削除し、Metasapce Native Memory領域を追加しました.
6-1. Permanent Generation Heapゾーン(JVM管理) クラスメタデータ(クラス名、作成情報、フィールド情報、メソッド情報等)の格納位置 .サイズが限られており、メモリ漏れ(?)なったみたい?! 6-2. Metaspaceオリジナルメモリ(オペレーティングシステムによって管理) サイズ自動増加 7. Stream API
collection、arrayなどの要素を1つずつ参照し、処理を繰り返すことで3つのステップを完了します.
1.フローの作成
2.ストリーム仲介演算(変換、加工)
3.ストリーム最終演算
ブローカ演算Descfilterが指定した条件を満たす要素のみが新しいストリームを返し、新しいストリームは明らかに重複する要素を除去します.内部でequals()がmapを使用して特定の値に変換されたFlatMapStream要素が配列されている場合、各要素は関数として渡され、戻り値からなる新しいstreamはlimitを返して最初の要素から始まり、n個の新しいstreamからskipを返して最初の要素から始まり、n個の新しいstreamを除いてソート、、、
1. ETC72017.09.21リリース G 1 GCアプリケーション Jshell を追加
2. Jigsaw
GradleやMavenのようなモジュールシステムでは、アプリケーションが必要なモジュールしか指定できません.
3.インタフェース内のプライベートメソッドが利用可能
1. ETC22018.0.3.20リリース GGインタフェースは に導入する.トップクラス認証機関CAの基本キット 2.varの追加
タイプ推論変数.コンパイラタイプ推論
Java 9のConcurrent CollectorはパラレルCollectorの完全GCよりも速度が遅い.
そこで、Java 10から、シングルスレッドベースのfull gcをパラレルfull gcに変更する
4. Thread-Local Handshakes
GC操作による
すべてのスレッドを同時に停止せずに個別に停止できます.
Java 11 (LTS)
1. ETC22018.09.25リリース Oracle JDK固有機能は、OpenJDKバージョン(完全に同じことを示す) に移植できます. Stringメソッドの追加 strip():文字列の前後のスペース を削除 stripleading():文字列の前のスペースを削除する striptTraling():文字列の後ろのスペースを削除する isBlank() repeat(n):指定された数の追加文字列で を返します.
HTTP Client Lambda Local variable 2. ZGC
一時停止時間は10ミリ秒を超えない.大量のメモリを低遅延で処理
3. Epsilon Grabage Collector
遅延コストを削減することを目的としています
Java 12
1. ETC9.03.19リリース GC改善--> 改善点について
2.スイッチドアの改善
1. ETC9.09.09.17リリース スイッチ生産量保留語 を増加
2. Text block
を選択します. https://blogs.oracle.com/javakr/post/java8-16 https://en.wikipedia.org/wiki/Java_version_history https://marrrang.tistory.com/16 Java 1.7 https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html Java 1.8 https://marrrang.tistory.com/36?category=891912 https://multifrontgarden.tistory.com/124 https://www.daleseo.com/java8-optional-after/ http://jmlim.github.io/java/2018/12/13/java8-datetime-example/ https://code-overflow.tistory.com/95 https://ahndding.tistory.com/23 https://gre-eny.tistory.com/192 Java 9 https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-java9-%EB%B9%A0%EB%A5%B4%EA%B2%8C-%EB%B3%B4%EA%B8%B0/ https://greatkim91.tistory.com/197 Java 10 https://itstory.tk/entry/Java-10-%EC%8B%A0%EA%B7%9C-%EA%B8%B0%EB%8A%A5%ED%8A%B9%EC%A7%95-%EC%A0%95%EB%A6%AC https://dreamchaser3.tistory.com/3 Java 11 https://readystory.tistory.com/48 Java 13 https://parkcheolu.tistory.com/176
1. ETC
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}
3.数値の間に下線を使用できますfloat pi1 = 3_.1415F; // Invalid;
float pi2 = 3._1415F; // Invalid;
long socialSecurityNumber1
= 999_99_9999_L; // Invalid;
int x2 = 5_2; // OK (decimal literal)
int x3 = 52_; // Invalid;
int x4 = 5_______2; // OK (decimal literal)
int x5 = 0_x52; // Invalid;
int x6 = 0x_52; // Invalid;
int x7 = 0x5_2; // OK (hexadecimal literal)
int x8 = 0x52_; // Invalid;
int x9 = 0_52; // OK (octal literal)
int x10 = 05_2; // OK (octal literal)
int x11 = 052_; // Invalid;
4.類型推定// 7 버전 이전
List<String> list = new ArrayList<String>();
// 7 버전 이후
List<String> list = new ArrayList<>();
Java 8 (LTS)1. ETC
interface DefaultInterface {
public void something();
default void show() {
...
}
}
3. Lambda3-1. 既存
interface Movable {
void move(String param);
}
class Car implements Movable {
@Override
public void move(String param) {
...
}
}
Moveable movable = new Movable() {
@Override
public void move(String param) {
...
}
}
3-2. Lambda式下図に示すようにramda式を実現するには抽象的な方法が必要である.
@FunctionalInterface
は抽象メソッドを表し、抽象メソッドが1つでない場合compileエラーが発生します.@FunctionalInterface
interface Moveable {
void move(String param);
}
Moveable moveable = (param) -> {
...
}
Moveable moveable = param -> ...;
4. Optional小包
null이 될 수도 있는 객체
の包装類.NullPointerException(NPE)の使用は避けてください.
methoddescget()はオブジェクトを返します.NoSuchElementExceptionRElse(T other)オブジェクトが空の場合、他の戻りオブジェクトが空の場合にのみElseGet(Supplierother)オブジェクトが呼び出されるため、性能的にはElseThrow(Supplier異常Supplier)オブジェクトよりも優れているか、またはElseThrow(Supplier異常Supplier)
@Getter
public class Computer {
private Speaker speaker;
}
@Getter
public class Speaker {
private String name;
}
// computer의 speaker가 null이면 NPE발생
String speakerName = computer.getSpeaker().getName();
// null 체크
if(computer != null && computer.getSpeaker() != null ...) {
...
}
// optional
String speakerName = Optional.ofNullable(computer)
.map(Computer::getSpeaker)
.map(Speaker::getName)
.orElse("none");
5.複数のDataTimeを追加追加されたAPIDescjava.time.LocalDate日付.タイムゾーンXjavaを使用します.time.LocalTime時間タイムゾーンXjavaを使用します.time.LocalDataTime日付と時刻.タイムゾーンXjavaを使用します.time.ZonedDateTime日付と時間.タイムゾーンOjavaを使用します.time.DateTimeFormatterjava.時間のフォーマットjava.time.Duration時間javaを秒/ナノ秒単位で測定した.time.Period時間javaを年/月/日単位で測定します.time.音声チューナーの日付の調整
5-1. 日付出力
LocalDate date = LocalDate.now(); // 오늘 날짜
LocalDate date = LocalDate.of(2021, 12, 23); // 2021-12-23
LocalDate date = LocalDate.parse("2021-12-23"); // 2021-12-23
5-2. 日付の増減LocalDateTime datetime = LocalDateTime.of(2021, 12, 23, 0, 0, 0);
datetime.plusMonths(1);
datetime.plusWeeks(1);
datetime.plusDays(1);
datetime.plusHours(1);
datetime.minusMinutes(1);
6.永続領域の削除(さらに学習が必要)Perament Heap領域を削除し、Metasapce Native Memory領域を追加しました.
6-1. Permanent Generation
collection、arrayなどの要素を1つずつ参照し、処理を繰り返すことで3つのステップを完了します.
1.フローの作成
2.ストリーム仲介演算(変換、加工)
3.ストリーム最終演算
ブローカ演算Descfilterが指定した条件を満たす要素のみが新しいストリームを返し、新しいストリームは明らかに重複する要素を除去します.内部でequals()がmapを使用して特定の値に変換されたFlatMapStream要素が配列されている場合、各要素は関数として渡され、戻り値からなる新しいstreamはlimitを返して最初の要素から始まり、n個の新しいstreamからskipを返して最初の要素から始まり、n個の新しいstreamを除いてソート、、、
List<Integer> list = Arrays.asList(1, 2, 3, 3, 4, 4);
Stream<Integer> stream = list.stream().distinct(); // 1, 2, 3, 4
Stream<Integer> stream = list.stream().filter(num -> num % 2 == 0); // 2, 4, 4
List<String> list = Arrays.asList("Java", "Kotlin", "Scala");
Stream<Integer> stream = list.stream().map(String::length); // 4, 6, 5
Stream<String> stream = list.stream().map(String::upperCase); // JAVA, KOTLIN, SCALA
List<String> list = Arrays.asList("Java", "C", "Python");
list.stream().sorted().collect(Collectors.toList());
list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
Java 91. ETC
2. Jigsaw
GradleやMavenのようなモジュールシステムでは、アプリケーションが必要なモジュールしか指定できません.
3.インタフェース内のプライベートメソッドが利用可能
public interface Interface {
private void method() {
...
}
private static void method() {
...
}
}
Java 101. ETC
タイプ推論変数.コンパイラタイプ推論
var list = new ArrayList<String>(); // ArrayList<String>
var numbers = List.of(1, 2, 3, 4, 5); // List<Integer>
3. Parallel Full GC for G1Java 9のConcurrent CollectorはパラレルCollectorの完全GCよりも速度が遅い.
そこで、Java 10から、シングルスレッドベースのfull gcをパラレルfull gcに変更する
4. Thread-Local Handshakes
GC操作による
stop-the-world(GC thread 외 모든 thread가 멈춤)
.すべてのスレッドを同時に停止せずに個別に停止できます.
Java 11 (LTS)
1. ETC
一時停止時間は10ミリ秒を超えない.大量のメモリを低遅延で処理
3. Epsilon Grabage Collector
遅延コストを削減することを目的としています
Java 12
1. ETC
2.スイッチドアの改善
switch(day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
JDK 131. ETC
2. Text block
を選択します.
String str = """
This
is
text block
""";
ReferencesReference
この問題について(Javaバージョンのプロパティ(1.7~13)), 我々は、より多くの情報をここで見つけました https://velog.io/@sixhustle/java-versionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol