Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java 8 - Panduan Singkat

Java 8 - Ikhtisar

JAVA 8 adalah rilis fitur utama dari pengembangan bahasa pemrograman JAVA. Versi awalnya dirilis pada 18 Maret 2014. Dengan rilis Java 8, Java menyediakan dukungan untuk pemrograman fungsional, mesin JavaScript baru, API baru untuk manipulasi waktu tanggal, API streaming baru, dll.

Fitur Baru

Perhatikan cuplikan kode berikut.

Demo Langsung
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;

public class Java8Tester {

   public static void main(String args[]) {
   
      List<String> names1 = new ArrayList<String>();
      names1.add("Mahesh ");
      names1.add("Suresh ");
      names1.add("Ramesh ");
      names1.add("Naresh ");
      names1.add("Kalpesh ");
		
      List<String> names2 = new ArrayList<String>();
      names2.add("Mahesh ");
      names2.add("Suresh ");
      names2.add("Ramesh ");
      names2.add("Naresh ");
      names2.add("Kalpesh ");
		
      Java8Tester tester = new Java8Tester();
      System.out.println("Sort using Java 7 syntax: ");
		
      tester.sortUsingJava7(names1);
      System.out.println(names1);
      System.out.println("Sort using Java 8 syntax: ");
		
      tester.sortUsingJava8(names2);
      System.out.println(names2);
   }
   
   //sort using java 7
   private void sortUsingJava7(List<String> names) {   
      Collections.sort(names, new Comparator<String>() {
         @Override
         public int compare(String s1, String s2) {
            return s1.compareTo(s2);
         }
      });
   }
   
   //sort using java 8
   private void sortUsingJava8(List<String> names) {
      Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
   }
}

Jalankan program untuk mendapatkan hasil berikut.

Sort using Java 7 syntax:
[ Kalpesh Mahesh Naresh Ramesh Suresh ]
Sort using Java 8 syntax:
[ Kalpesh Mahesh Naresh Ramesh Suresh ]

Di sini sortUsingJava8() metode ini menggunakan fungsi sortir dengan ekspresi lambda sebagai parameter untuk mendapatkan kriteria pengurutan.

Java 8 - Pengaturan Lingkungan

Pengaturan Lingkungan Lokal

Jika Anda ingin mengatur lingkungan Anda sendiri untuk bahasa pemrograman Java, maka bagian ini memandu Anda melalui seluruh proses. Silakan ikuti langkah-langkah yang diberikan di bawah ini untuk menyiapkan lingkungan Java Anda.

Java SE dapat diunduh secara gratis dari tautan berikut

https://www.Oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

Anda mengunduh versi berdasarkan sistem operasi Anda.

Ikuti petunjuk untuk mengunduh Java, dan jalankan .exe untuk menginstal Java di mesin Anda. Setelah Anda menginstal Java pada mesin Anda, Anda perlu mengatur variabel lingkungan untuk menunjuk ke direktori instalasi yang benar.

Mengatur Jalur untuk Windows 2000/XP

Dengan asumsi Anda telah menginstal Java di direktori c:\Program Files\java\jdk

Menyiapkan Jalur untuk Windows 95/98/ME

Dengan asumsi Anda telah menginstal Java di direktori c:\Program Files\java\jdk

Menyiapkan Path untuk Linux, UNIX, Solaris, FreeBSD

PATH variabel lingkungan harus diatur ke titik di mana binari Java telah diinstal. Lihat dokumentasi shell Anda jika Anda kesulitan melakukannya.

Misalnya, jika Anda menggunakan bash sebagai shell Anda, maka Anda akan menambahkan baris berikut di akhir '.bashrc:export PATH=/path/to/java:$PATH'

Editor Java Populer

Untuk menulis program Java, Anda memerlukan editor teks. Bahkan ada IDE yang lebih canggih yang tersedia di pasar. Namun untuk saat ini, Anda dapat mempertimbangkan salah satu dari berikut ini −

Java 8 - Ekspresi Lambda

Ekspresi Lambda diperkenalkan di Java 8 dan disebut-sebut sebagai fitur terbesar Java 8. Ekspresi Lambda memfasilitasi pemrograman fungsional, dan sangat menyederhanakan pengembangan.

Sintaks

Ekspresi lambda ditandai dengan sintaks berikut.

parameter -> expression body

Berikut ini adalah karakteristik penting dari ekspresi lambda.

Contoh Ekspresi Lambda

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
		
      //with type declaration
      MathOperation addition = (int a, int b) -> a + b;
		
      //with out type declaration
      MathOperation subtraction = (a, b) -> a - b;
		
      //with return statement along with curly braces
      MathOperation multiplication = (int a, int b) -> { return a * b; };
		
      //without return statement and without curly braces
      MathOperation division = (int a, int b) -> a / b;
		
      System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
      System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
      System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
      System.out.println("10 / 5 = " + tester.operate(10, 5, division));
		
      //without parenthesis
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
		
      //with parenthesis
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
		
      greetService1.sayMessage("Mahesh");
      greetService2.sayMessage("Suresh");
   }
	
   interface MathOperation {
      int operation(int a, int b);
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
	
   private int operate(int a, int b, MathOperation mathOperation) {
      return mathOperation.operation(a, b);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh

Berikut ini adalah poin penting yang harus diperhatikan dalam contoh di atas.

Cakupan

Dengan menggunakan ekspresi lambda, Anda dapat merujuk ke variabel final apa pun atau variabel final efektif (yang ditetapkan hanya sekali). Ekspresi Lambda memunculkan kesalahan kompilasi, jika variabel diberi nilai untuk kedua kalinya.

Contoh Cakupan

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
public class Java8Tester {

   final static String salutation = "Hello! ";
   
   public static void main(String args[]) {
      GreetingService greetService1 = message -> 
      System.out.println(salutation + message);
      greetService1.sayMessage("Mahesh");
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Hello! Mahesh

Java 8 - Referensi Metode

Referensi metode membantu menunjukkan metode dengan namanya. Referensi metode dijelaskan menggunakan simbol "::". Referensi metode dapat digunakan untuk menunjukkan jenis metode berikut −

Contoh Referensi Metode

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

import java.util.List;
import java.util.ArrayList;

public class Java8Tester {

   public static void main(String args[]) {
      List names = new ArrayList();
		
      names.add("Mahesh");
      names.add("Suresh");
      names.add("Ramesh");
      names.add("Naresh");
      names.add("Kalpesh");
		
      names.forEach(System.out::println);
   }
}

Di sini kita telah melewati metode System.out::println sebagai referensi metode statis.

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Mahesh
Suresh
Ramesh
Naresh
Kalpesh

Java 8 - Antarmuka Fungsional

Antarmuka fungsional memiliki fungsi tunggal untuk dipamerkan. Misalnya, antarmuka Sebanding dengan metode tunggal 'compareTo' digunakan untuk tujuan perbandingan. Java 8 telah mendefinisikan banyak antarmuka fungsional untuk digunakan secara ekstensif dalam ekspresi lambda. Berikut adalah daftar antarmuka fungsional yang didefinisikan dalam paket java.util.Function.


No.Sr. Antarmuka &Deskripsi
1

Konsumen Bi

Mewakili operasi yang menerima dua argumen input, dan tidak mengembalikan hasil.

2

BiFunction

Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil.

3

Operator Biner

Mewakili operasi pada dua operan dengan tipe yang sama, menghasilkan hasil dari tipe yang sama dengan operan.

4

Predikat Bi

Mewakili predikat (fungsi bernilai Boolean) dari dua argumen.

5

Pemasok Boolean

Mewakili pemasok hasil bernilai Boolean.

6

Konsumen

Mewakili operasi yang menerima argumen input tunggal dan tidak mengembalikan hasil.

7

DoubleBinaryOperator

Mewakili operasi pada dua operan bernilai ganda dan menghasilkan hasil bernilai ganda.

8

Konsumen Ganda

Mewakili operasi yang menerima argumen tunggal bernilai ganda dan tidak mengembalikan hasil.

9

Fungsi Ganda

Mewakili fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil.

10

Predikat Ganda

Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai ganda.

11

Pemasok Ganda

Mewakili pemasok hasil bernilai ganda.

12

DoubleToIntFunction

Mewakili fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil bernilai int.

13

DoubleToLongFunction

Mewakili fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil bernilai panjang.

14

DoubleUnaryOperator

Mewakili operasi pada operan bernilai ganda tunggal yang menghasilkan hasil bernilai ganda.

15

Fungsi

Mewakili fungsi yang menerima satu argumen dan menghasilkan hasil.

16

IntBinaryOperator

Mewakili operasi pada dua operan bernilai int dan menghasilkan hasil bernilai int.

17

IntConsumer

Mewakili operasi yang menerima argumen bernilai int tunggal dan tidak mengembalikan hasil.

18

IntFunction

Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil.

19

IntPredicate

Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai int.

20

IntSupplier

Mewakili pemasok hasil yang bernilai tinggi.

21

IntToDoubleFunction

Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil bernilai ganda.

22

IntToLongFunction

Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil bernilai panjang.

23

IntUnaryOperator

Mewakili operasi pada operan bernilai int tunggal yang menghasilkan hasil bernilai int.

24

LongBinaryOperator

Mewakili operasi pada dua operan bernilai panjang dan menghasilkan hasil bernilai panjang.

25

Konsumen Panjang

Mewakili operasi yang menerima satu argumen bernilai panjang dan tidak mengembalikan hasil.

26

Fungsi Panjang

Mewakili fungsi yang menerima argumen bernilai panjang dan menghasilkan hasil.

27

Predikat Panjang

Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai panjang.

28

Pemasok Panjang

Mewakili pemasok hasil yang bernilai lama.

29

Fungsi LongToDouble

Mewakili fungsi yang menerima argumen bernilai panjang dan menghasilkan hasil bernilai ganda.

30

LongToIntFunction

Mewakili fungsi yang menerima argumen bernilai panjang dan menghasilkan hasil bernilai int.

31

LongUnaryOperator

Mewakili operasi pada operan bernilai panjang tunggal yang menghasilkan hasil bernilai panjang.

32

ObjDoubleConsumer

Mewakili operasi yang menerima argumen bernilai objek dan bernilai ganda, dan tidak mengembalikan hasil.

33

ObjIntConsumer

Mewakili operasi yang menerima argumen bernilai objek dan bernilai int, dan tidak mengembalikan hasil.

34

ObjLongConsumer

Mewakili operasi yang menerima argumen bernilai objek dan bernilai panjang, dan tidak mengembalikan hasil.

35

Predikat

Mewakili predikat (fungsi bernilai Boolean) dari satu argumen.

36

Pemasok

Mewakili pemasok hasil.

37

ToDoubleBiFunction

Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai ganda.

38

ToDoubleFunction

Mewakili fungsi yang menghasilkan hasil bernilai ganda.

39

ToIntBiFunction

Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai int.

40

ToIntFunction

Mewakili fungsi yang menghasilkan hasil bernilai int.

41

ToLongBiFunction

Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai panjang.

42

ToLongFunction

Mewakili fungsi yang menghasilkan hasil bernilai panjang.

43

UnaryOperator

Mewakili operasi pada operan tunggal yang menghasilkan hasil dengan tipe yang sama dengan operan-nya.


Contoh Antarmuka Fungsional

Predikat antarmuka adalah antarmuka fungsional dengan tes metode (Objek) untuk mengembalikan nilai Boolean. Antarmuka ini menandakan bahwa suatu objek diuji benar atau salah.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {

   public static void main(String args[]) {
      List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
		
      // Predicate<Integer> predicate = n -> true
      // n is passed as parameter to test method of Predicate interface
      // test method will always return true no matter what value n has.
		
      System.out.println("Print all numbers:");
		
      //pass n as parameter
      eval(list, n->true);
		
      // Predicate<Integer> predicate1 = n -> n%2 == 0
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n%2 comes to be zero
		
      System.out.println("Print even numbers:");
      eval(list, n-> n%2 == 0 );
		
      // Predicate<Integer> predicate2 = n -> n > 3
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n is greater than 3.
		
      System.out.println("Print numbers greater than 3:");
      eval(list, n-> n > 3 );
   }
	
   public static void eval(List<Integer> list, Predicate<Integer> predicate) {

      for(Integer n: list) {

         if(predicate.test(n)) {
            System.out.println(n + " ");
         }
      }
   }
}

Di sini kita telah melewati antarmuka Predikat, yang mengambil satu input dan mengembalikan Boolean.

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Print all numbers:
1
2
3
4
5
6
7
8
9
Print even numbers:
2
4
6
8
Print numbers greater than 3:
4
5
6
7
8
9

Java 8 - Metode Default

Java 8 memperkenalkan konsep baru implementasi metode default di antarmuka. Kemampuan ini ditambahkan untuk kompatibilitas mundur sehingga antarmuka lama dapat digunakan untuk memanfaatkan kemampuan ekspresi lambda Java 8.

Misalnya, antarmuka 'Daftar' atau 'Koleksi' tidak memiliki deklarasi metode 'forEach'. Jadi, menambahkan metode seperti itu hanya akan merusak implementasi kerangka kerja koleksi. Java 8 memperkenalkan metode default sehingga antarmuka Daftar/Koleksi dapat memiliki implementasi default metode forEach, dan kelas yang mengimplementasikan antarmuka ini tidak perlu mengimplementasikan hal yang sama.

Sintaks

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
}

Beberapa Default

Dengan fungsi default di antarmuka, ada kemungkinan bahwa kelas mengimplementasikan dua antarmuka dengan metode default yang sama. Kode berikut menjelaskan bagaimana ambiguitas ini dapat diselesaikan.

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
}

public interface fourWheeler {

   default void print() {
      System.out.println("I am a four wheeler!");
   }
}

Solusi pertama adalah membuat metode sendiri yang menggantikan implementasi default.

public class car implements vehicle, fourWheeler {

   public void print() {
      System.out.println("I am a four wheeler car vehicle!");
   }
}

Solusi kedua adalah memanggil metode default dari antarmuka yang ditentukan menggunakan super.

public class car implements vehicle, fourWheeler {

   public void print() {
      vehicle.super.print();
   }
}

Metode Default Statis

Antarmuka juga dapat memiliki metode pembantu statis dari Java 8 dan seterusnya.

public interface vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
	
   static void blowHorn() {
      System.out.println("Blowing horn!!!");
   }
}

Contoh Metode Default

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
public class Java8Tester {

   public static void main(String args[]) {
      Vehicle vehicle = new Car();
      vehicle.print();
   }
}

interface Vehicle {

   default void print() {
      System.out.println("I am a vehicle!");
   }
	
   static void blowHorn() {
      System.out.println("Blowing horn!!!");
   }
}

interface FourWheeler {

   default void print() {
      System.out.println("I am a four wheeler!");
   }
}

class Car implements Vehicle, FourWheeler {

   public void print() {
      Vehicle.super.print();
      FourWheeler.super.print();
      Vehicle.blowHorn();
      System.out.println("I am a car!");
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!

Java 8 - Streaming

Stream adalah lapisan abstrak baru yang diperkenalkan di Java 8. Dengan menggunakan stream, Anda dapat memproses data dengan cara deklaratif yang mirip dengan pernyataan SQL. Sebagai contoh, perhatikan pernyataan SQL berikut.

SELECT max(salary), employee_id, employee_name FROM Employee

Ekspresi SQL di atas secara otomatis mengembalikan detail karyawan bergaji maksimum, tanpa melakukan perhitungan apa pun di pihak pengembang. Menggunakan kerangka koleksi di Jawa, pengembang harus menggunakan loop dan melakukan pemeriksaan berulang. Kekhawatiran lain adalah efisiensi; karena prosesor multi-core tersedia dengan mudah, pengembang Java harus menulis pemrosesan kode paralel yang bisa sangat rawan kesalahan.

Untuk mengatasi masalah tersebut, Java 8 memperkenalkan konsep aliran yang memungkinkan pengembang memproses data secara deklaratif dan memanfaatkan arsitektur multicore tanpa perlu menulis kode khusus untuk itu.

Apa itu Aliran?

Stream mewakili urutan objek dari sumber, yang mendukung operasi agregat. Berikut adalah ciri-ciri Aliran −

Menghasilkan Aliran

Dengan Java 8, antarmuka Collection memiliki dua metode untuk menghasilkan Stream.

List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());

untuk Setiap

Stream telah menyediakan metode baru 'forEach' untuk mengulangi setiap elemen aliran. Segmen kode berikut menunjukkan cara mencetak 10 angka acak menggunakan forEach.

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

peta

Metode 'peta' digunakan untuk memetakan setiap elemen ke hasil yang sesuai. Segmen kode berikut mencetak kotak angka unik menggunakan peta.

List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

//get list of unique squares
List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());

filter

Metode 'filter' digunakan untuk menghilangkan elemen berdasarkan kriteria. Segmen kode berikut mencetak jumlah string kosong menggunakan filter.

List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");

//get count of empty string
int count = strings.stream().filter(string -> string.isEmpty()).count();

batas

Metode 'batas' digunakan untuk mengurangi ukuran aliran. Segmen kode berikut menunjukkan cara mencetak 10 angka acak menggunakan batas.

Random random = new Random();
random.ints().limit(10).forEach(System.out::println);

diurutkan

Metode 'diurutkan' digunakan untuk mengurutkan aliran. Segmen kode berikut menunjukkan cara mencetak 10 angka acak dalam urutan yang diurutkan.

Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);

Pemrosesan Paralel

parallelStream adalah alternatif aliran untuk pemrosesan paralel. Lihatlah segmen kode berikut yang mencetak hitungan string kosong menggunakan parallelStream.

List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");

//get count of empty string
long count = strings.parallelStream().filter(string -> string.isEmpty()).count();

Sangat mudah untuk beralih antara aliran sekuensial dan paralel.

Kolektor

Kolektor digunakan untuk menggabungkan hasil pemrosesan pada elemen aliran. Kolektor dapat digunakan untuk mengembalikan daftar atau string.

List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());

System.out.println("Filtered List: " + filtered);
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
System.out.println("Merged String: " + mergedString);

Statistik

Dengan Java 8, pengumpul statistik diperkenalkan untuk menghitung semua statistik saat pemrosesan aliran sedang dilakukan.

List numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);

IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();

System.out.println("Highest number in List : " + stats.getMax());
System.out.println("Lowest number in List : " + stats.getMin());
System.out.println("Sum of all numbers : " + stats.getSum());
System.out.println("Average of all numbers : " + stats.getAverage());

Contoh Aliran

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.util.ArrayList;
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import java.util.Map;

public class Java8Tester {

   public static void main(String args[]) {
      System.out.println("Using Java 7: ");
		
      // Count empty strings
      List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
      System.out.println("List: " +strings);
      long count = getCountEmptyStringUsingJava7(strings);
		
      System.out.println("Empty Strings: " + count);
      count = getCountLength3UsingJava7(strings);
		
      System.out.println("Strings of length 3: " + count);
		
      //Eliminate empty string
      List<String> filtered = deleteEmptyStringsUsingJava7(strings);
      System.out.println("Filtered List: " + filtered);
		
      //Eliminate empty string and join using comma.
      String mergedString = getMergedStringUsingJava7(strings,", ");
      System.out.println("Merged String: " + mergedString);
      List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
		
      //get list of square of distinct numbers
      List<Integer> squaresList = getSquares(numbers);
      System.out.println("Squares List: " + squaresList);
      List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);
		
      System.out.println("List: " +integers);
      System.out.println("Highest number in List : " + getMax(integers));
      System.out.println("Lowest number in List : " + getMin(integers));
      System.out.println("Sum of all numbers : " + getSum(integers));
      System.out.println("Average of all numbers : " + getAverage(integers));
      System.out.println("Random Numbers: ");
		
      //print ten random numbers
      Random random = new Random();
		
      for(int i = 0; i < 10; i++) {
         System.out.println(random.nextInt());
      }
		
      System.out.println("Using Java 8: ");
      System.out.println("List: " +strings);
		
      count = strings.stream().filter(string->string.isEmpty()).count();
      System.out.println("Empty Strings: " + count);
		
      count = strings.stream().filter(string -> string.length() == 3).count();
      System.out.println("Strings of length 3: " + count);
		
      filtered = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.toList());
      System.out.println("Filtered List: " + filtered);
		
      mergedString = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.joining(", "));
      System.out.println("Merged String: " + mergedString);
		
      squaresList = numbers.stream().map( i ->i*i).distinct().collect(Collectors.toList());
      System.out.println("Squares List: " + squaresList);
      System.out.println("List: " +integers);
		
      IntSummaryStatistics stats = integers.stream().mapToInt((x) ->x).summaryStatistics();
		
      System.out.println("Highest number in List : " + stats.getMax());
      System.out.println("Lowest number in List : " + stats.getMin());
      System.out.println("Sum of all numbers : " + stats.getSum());
      System.out.println("Average of all numbers : " + stats.getAverage());
      System.out.println("Random Numbers: ");
		
      random.ints().limit(10).sorted().forEach(System.out::println);
		
      //parallel processing
      count = strings.parallelStream().filter(string -> string.isEmpty()).count();
      System.out.println("Empty Strings: " + count);
   }
	
   private static int getCountEmptyStringUsingJava7(List<String> strings) {
      int count = 0;

      for(String string: strings) {
		
         if(string.isEmpty()) {
            count++;
         }
      }
      return count;
   }
	
   private static int getCountLength3UsingJava7(List<String> strings) {
      int count = 0;
		
      for(String string: strings) {
		
         if(string.length() == 3) {
            count++;
         }
      }
      return count;
   }
	
   private static List<String> deleteEmptyStringsUsingJava7(List<String> strings) {
      List<String> filteredList = new ArrayList<String>();
		
      for(String string: strings) {
		
         if(!string.isEmpty()) {
             filteredList.add(string);
         }
      }
      return filteredList;
   }
	
   private static String getMergedStringUsingJava7(List<String> strings, String separator) {
      StringBuilder stringBuilder = new StringBuilder();
		
      for(String string: strings) {
		
         if(!string.isEmpty()) {
            stringBuilder.append(string);
            stringBuilder.append(separator);
         }
      }
      String mergedString = stringBuilder.toString();
      return mergedString.substring(0, mergedString.length()-2);
   }
	
   private static List<Integer> getSquares(List<Integer> numbers) {
      List<Integer> squaresList = new ArrayList<Integer>();
		
      for(Integer number: numbers) {
         Integer square = new Integer(number.intValue() * number.intValue());
			
         if(!squaresList.contains(square)) {
            squaresList.add(square);
         }
      }
      return squaresList;
   }
	
   private static int getMax(List<Integer> numbers) {
      int max = numbers.get(0);
		
      for(int i = 1;i < numbers.size();i++) {
		
         Integer number = numbers.get(i);
			
         if(number.intValue() > max) {
            max = number.intValue();
         }
      }
      return max;
   }
	
   private static int getMin(List<Integer> numbers) {
      int min = numbers.get(0);
		
      for(int i= 1;i < numbers.size();i++) {
         Integer number = numbers.get(i);
		
         if(number.intValue() < min) {
            min = number.intValue();
         }
      }
      return min;
   }
	
   private static int getSum(List numbers) {
      int sum = (int)(numbers.get(0));
		
      for(int i = 1;i < numbers.size();i++) {
         sum += (int)numbers.get(i);
      }
      return sum;
   }
	
   private static int getAverage(List<Integer> numbers) {
      return getSum(numbers) / numbers.size();
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Seharusnya menghasilkan hasil berikut

Using Java 7:
List: [abc, , bc, efg, abcd, , jkl]
Empty Strings: 2
Strings of length 3: 3
Filtered List: [abc, bc, efg, abcd, jkl]
Merged String: abc, bc, efg, abcd, jkl
Squares List: [9, 4, 49, 25]
List: [1, 2, 13, 4, 15, 6, 17, 8, 19]
Highest number in List : 19
Lowest number in List : 1
Sum of all numbers : 85
Average of all numbers : 9
Random Numbers:
-1279735475
903418352
-1133928044
-1571118911
628530462
18407523
-881538250
-718932165
270259229
421676854
Using Java 8:
List: [abc, , bc, efg, abcd, , jkl]
Empty Strings: 2
Strings of length 3: 3
Filtered List: [abc, bc, efg, abcd, jkl]
Merged String: abc, bc, efg, abcd, jkl
Squares List: [9, 4, 49, 25]
List: [1, 2, 13, 4, 15, 6, 17, 8, 19]
Highest number in List : 19
Lowest number in List : 1
Sum of all numbers : 85
Average of all numbers : 9.444444444444445
Random Numbers:
-1009474951
-551240647
-2484714
181614550
933444268
1227850416
1579250773
1627454872
1683033687
1798939493
Empty Strings: 2

Java 8 - Kelas Opsional

Opsional adalah objek wadah yang digunakan untuk memuat objek bukan nol. Objek opsional digunakan untuk mewakili null dengan nilai tidak ada. Kelas ini memiliki berbagai metode utilitas untuk memfasilitasi kode untuk menangani nilai sebagai 'tersedia' atau 'tidak tersedia' alih-alih memeriksa nilai nol. Ini diperkenalkan di Java 8 dan mirip dengan Optional yang ada di Guava.

Deklarasi Kelas

Berikut ini adalah deklarasi untuk java.util.Optional kelas

public final class Optional<T> extends Object

Metode Kelas

No.Sr. Metode &Deskripsi
1

statis Opsional kosong()

Mengembalikan instance Opsional kosong.

2

boolean sama dengan(Objek objek)

Menunjukkan apakah beberapa objek lain "sama dengan" Opsional ini.

3

Filter Opsional(Predikat)

Jika ada nilai dan nilainya cocok dengan predikat yang diberikan, nilai tersebut akan mengembalikan Optional yang menjelaskan nilai tersebut, jika tidak mengembalikan Optional yang kosong.

4

Opsional flatMap(Fungsi> mapper)

Jika ada nilai, nilai akan menerapkan fungsi pemetaan bantalan Opsional yang disediakan, mengembalikan hasil tersebut, jika tidak mengembalikan Opsional kosong.

5

Dapatkan()

Jika ada nilai dalam Opsional ini, kembalikan nilainya, jika tidak, lemparkan NoSuchElementException.

6

int kode hash()

Mengembalikan nilai kode hash dari nilai sekarang, jika ada, atau 0 (nol) jika tidak ada nilai.

7

void ifPresent(Konsumen konsumen)

Jika ada nilai, ia akan memanggil konsumen tertentu dengan nilai tersebut, jika tidak, tidak akan melakukan apa pun.

8

boolean isPresent()

Mengembalikan nilai true jika ada nilai yang ada, jika tidak salah.

9

Opsional peta(Fungsi mapper)

Jika ada nilai, terapkan fungsi pemetaan yang disediakan padanya, dan jika hasilnya bukan nol, kembalikan Opsional yang menjelaskan hasilnya.

10

statis Opsional dari(nilai T)

Mengembalikan Opsional dengan nilai non-null saat ini yang ditentukan.

11

statis Opsional dariNullable(nilai T)

Mengembalikan Opsional yang menjelaskan nilai yang ditentukan, jika bukan nol, jika tidak mengembalikan Opsional kosong.

12

T orElse(T lainnya)

Mengembalikan nilai jika ada, jika tidak mengembalikan nilai lainnya.

13

T orElseGet(Pemasok lainnya)

Mengembalikan nilai jika ada, jika tidak memanggil yang lain dan mengembalikan hasil dari pemanggilan itu.

14

T orElseThrow(Supplier exceptionSupplier)

Mengembalikan nilai yang terkandung, jika ada, jika tidak melempar pengecualian yang akan dibuat oleh pemasok yang disediakan.

15

String toString()

Mengembalikan representasi string yang tidak kosong dari Opsional ini yang cocok untuk debugging.

Kelas ini mewarisi metode dari kelas berikut −

Contoh Opsional

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.util.Optional;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);
		
      //Optional.ofNullable - allows passed parameter to be null.
      Optional<Integer> a = Optional.ofNullable(value1);
		
      //Optional.of - throws NullPointerException if passed parameter is null
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }
	
   public Integer sum(Optional<Integer> a, Optional<Integer> b) {
      //Optional.isPresent - checks the value is present or not
		
      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());
		
      //Optional.orElse - returns the value if present otherwise returns
      //the default value passed.
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - gets the value, value should be present
      Integer value2 = b.get();
      return value1 + value2;
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

First parameter is present: false
Second parameter is present: true
10

Java 8 - JavaScript Nashorn

Dengan Java 8, Nashorn, mesin javascript yang jauh lebih baik diperkenalkan, untuk menggantikan Rhino yang ada. Nashorn memberikan kinerja 2 hingga 10 kali lebih baik, karena secara langsung mengkompilasi kode dalam memori dan meneruskan bytecode ke JVM. Nashorn menggunakan fitur panggilan dinamis, yang diperkenalkan di Java 7 untuk meningkatkan kinerja.

jjs

Untuk mesin Nashorn, JAVA 8 memperkenalkan alat baris perintah baru, jjs, untuk mengeksekusi kode javascript di konsol.

Menafsirkan File js

Buat dan simpan file sample.js di c:\> folder JAVA.

contoh.js

print('Hello World!');

Buka konsol dan gunakan perintah berikut.

C:\JAVA>jjs sample.js

Ini akan menghasilkan output berikut:

Hello World!

jjs dalam Mode Interaktif

Buka konsol dan gunakan perintah berikut.

C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

Luluskan Argumen

Buka konsol dan gunakan perintah berikut.

C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

Memanggil JavaScript dari Java

Menggunakan ScriptEngineManager, kode JavaScript dapat dipanggil dan diinterpretasikan dalam Java.

Contoh

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Java8Tester {

   public static void main(String args[]) {
      ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
      ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
		
      String name = "Mahesh";
      Integer result = null;
      
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");
         
      } catch(ScriptException e) {
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Seharusnya menghasilkan hasil berikut

Mahesh
12

Memanggil Java dari JavaScript

Contoh berikut menjelaskan cara mengimpor dan menggunakan kelas Java dalam skrip java.

Buat dan simpan sample.js di c:\> folder JAVA.

contoh.js

var BigDecimal = Java.type('java.math.BigDecimal');

function calculate(amount, percentage) {

   var result = new BigDecimal(amount).multiply(new BigDecimal(percentage)).divide(
      new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
   
   return result.toPlainString();
}
var result = calculate(568000000000000000023,13.9);
print(result);

Buka konsol dan gunakan perintah berikut.

C:\JAVA>jjs sample.js

Ini harus menghasilkan output berikut

78952000000000000003.20

Java 8 - API Tanggal/Waktu Baru

Dengan Java 8, API Tanggal-Waktu baru diperkenalkan untuk menutupi kelemahan API tanggal-waktu lama berikut.

Java 8 memperkenalkan API tanggal-waktu baru di bawah paket java.time. Berikut adalah beberapa kelas penting yang diperkenalkan dalam paket java.time.

API Tanggal-Waktu Lokal

Kelas LocalDate/LocalTime dan LocalDateTime menyederhanakan pengembangan di mana zona waktu tidak diperlukan. Mari kita lihat mereka beraksi.

Buat program java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testLocalDateTime();
   }
	
   public void testLocalDateTime() {
      // Get the current date and time
      LocalDateTime currentTime = LocalDateTime.now();
      System.out.println("Current DateTime: " + currentTime);
		
      LocalDate date1 = currentTime.toLocalDate();
      System.out.println("date1: " + date1);
		
      Month month = currentTime.getMonth();
      int day = currentTime.getDayOfMonth();
      int seconds = currentTime.getSecond();
		
      System.out.println("Month: " + month +"day: " + day +"seconds: " + seconds);
		
      LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
      System.out.println("date2: " + date2);
		
      //12 december 2014
      LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
      System.out.println("date3: " + date3);
		
      //22 hour 15 minutes
      LocalTime date4 = LocalTime.of(22, 15);
      System.out.println("date4: " + date4);
		
      //parse a string
      LocalTime date5 = LocalTime.parse("20:15:30");
      System.out.println("date5: " + date5);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Current DateTime: 2014-12-09T11:00:45.457
date1: 2014-12-09
Month: DECEMBERday: 9seconds: 45
date2: 2012-12-10T11:00:45.457
date3: 2014-12-12
date4: 22:15
date5: 20:15:30

API Tanggal-Waktu Berzonasi

API tanggal-waktu yang dikategorikan akan digunakan ketika zona waktu dipertimbangkan. Mari kita lihat mereka beraksi.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.ZonedDateTime;
import java.time.ZoneId;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testZonedDateTime();
   }
	
   public void testZonedDateTime() {
      // Get the current date and time
      ZonedDateTime date1 = ZonedDateTime.parse("2007-12-03T10:15:30+05:30[Asia/Karachi]");
      System.out.println("date1: " + date1);
		
      ZoneId id = ZoneId.of("Europe/Paris");
      System.out.println("ZoneId: " + id);
		
      ZoneId currentZone = ZoneId.systemDefault();
      System.out.println("CurrentZone: " + currentZone);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

date1: 2007-12-03T10:15:30+05:00[Asia/Karachi]
ZoneId: Europe/Paris
CurrentZone: Etc/UTC

Enum Unit Chrono

java.time.temporal.ChronoUnit enum ditambahkan di Java 8 untuk menggantikan nilai integer yang digunakan di API lama untuk mewakili hari, bulan, dll. Mari kita lihat mereka beraksi.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testChromoUnits();
   }
	
   public void testChromoUnits() {
      //Get the current date
      LocalDate today = LocalDate.now();
      System.out.println("Current date: " + today);
		
      //add 1 week to the current date
      LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
      System.out.println("Next week: " + nextWeek);
		
      //add 1 month to the current date
      LocalDate nextMonth = today.plus(1, ChronoUnit.MONTHS);
      System.out.println("Next month: " + nextMonth);
		
      //add 1 year to the current date
      LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);
      System.out.println("Next year: " + nextYear);
		
      //add 10 years to the current date
      LocalDate nextDecade = today.plus(1, ChronoUnit.DECADES);
      System.out.println("Date after ten year: " + nextDecade);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Seharusnya menghasilkan hasil berikut

Current date: 2014-12-10
Next week: 2014-12-17
Next month: 2015-01-10
Next year: 2015-12-10
Date after ten year: 2024-12-10

Periode dan Durasi

Dengan Java 8, dua kelas khusus diperkenalkan untuk menangani perbedaan waktu.

Mari kita lihat mereka beraksi.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.temporal.ChronoUnit;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Duration;
import java.time.Period;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testPeriod();
      java8tester.testDuration();
   }
	
   public void testPeriod() {
      //Get the current date
      LocalDate date1 = LocalDate.now();
      System.out.println("Current date: " + date1);
		
      //add 1 month to the current date
      LocalDate date2 = date1.plus(1, ChronoUnit.MONTHS);
      System.out.println("Next month: " + date2);
      
      Period period = Period.between(date2, date1);
      System.out.println("Period: " + period);
   }
	
   public void testDuration() {
      LocalTime time1 = LocalTime.now();
      Duration twoHours = Duration.ofHours(2);
		
      LocalTime time2 = time1.plus(twoHours);
      Duration duration = Duration.between(time1, time2);
		
      System.out.println("Duration: " + duration);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Current date: 2014-12-10
Next month: 2015-01-10
Period: P-1M
Duration: PT2H

Pengatur Sementara

TemporalAdjuster digunakan untuk melakukan matematika tanggal. Misalnya, dapatkan "Sabtu Kedua Bulan Ini" atau "Selasa Berikutnya". Mari kita lihat mereka beraksi.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.time.DayOfWeek;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testAdjusters();
   }
	
   public void testAdjusters() {
      //Get the current date
      LocalDate date1 = LocalDate.now();
      System.out.println("Current date: " + date1);
		
      //get the next tuesday
      LocalDate nextTuesday = date1.with(TemporalAdjusters.next(DayOfWeek.TUESDAY));
      System.out.println("Next Tuesday on : " + nextTuesday);
		
      //get the second saturday of next month
      LocalDate firstInYear = LocalDate.of(date1.getYear(),date1.getMonth(), 1);
      LocalDate secondSaturday = firstInYear.with(TemporalAdjusters.nextOrSame(
         DayOfWeek.SATURDAY)).with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
      System.out.println("Second Saturday on : " + secondSaturday);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Seharusnya menghasilkan hasil berikut

Current date: 2014-12-10
Next Tuesday on : 2014-12-16
Second Saturday on : 2014-12-13

Kompatibilitas Mundur

Metode toInstant() ditambahkan ke objek Tanggal dan Kalender asli, yang dapat digunakan untuk mengonversinya ke API Tanggal-Waktu yang baru. Gunakan metode ofInstant(Insant,ZoneId) untuk mendapatkan objek LocalDateTime atau ZonedDateTime. Mari kita lihat mereka beraksi.

Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.

Java8Tester.java

Demo Langsung
import java.time.LocalDateTime;
import java.time.ZonedDateTime;

import java.util.Date;

import java.time.Instant;
import java.time.ZoneId;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8tester = new Java8Tester();
      java8tester.testBackwardCompatability();
   }
	
   public void testBackwardCompatability() {
      //Get the current date
      Date currentDate = new Date();
      System.out.println("Current date: " + currentDate);
		
      //Get the instant of current date in terms of milliseconds
      Instant now = currentDate.toInstant();
      ZoneId currentZone = ZoneId.systemDefault();
		
      LocalDateTime localDateTime = LocalDateTime.ofInstant(now, currentZone);
      System.out.println("Local date: " + localDateTime);
		
      ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, currentZone);
      System.out.println("Zoned date: " + zonedDateTime);
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Current date: Wed Dec 10 05:44:06 UTC 2014
Local date: 2014-12-10T05:44:06.635
Zoned date: 2014-12-10T05:44:06.635Z[Etc/UTC]

Java 8 - Base64

Dengan Java 8, Base64 akhirnya mendapatkan haknya. Java 8 sekarang memiliki encoder dan decoder bawaan untuk pengkodean Base64. Di Java 8, kita dapat menggunakan tiga jenis pengkodean Base64.

Kelas Bersarang

No.Sr. Kelas &Deskripsi bersarang
1

kelas statis Base64.Decoder

Kelas ini mengimplementasikan dekoder untuk mendekode data byte menggunakan skema pengkodean Base64 seperti yang ditentukan dalam RFC 4648 dan RFC 2045.

2

kelas statis Base64.Encoder

Kelas ini mengimplementasikan encoder untuk encoding data byte menggunakan skema encoding Base64 seperti yang ditentukan dalam RFC 4648 dan RFC 2045.

Metode

No.Sr. Nama &Deskripsi Metode
1

Base64.Decoder statis getDecoder()

Mengembalikan Base64.Decoder yang mendekode menggunakan skema pengkodean base64 tipe Dasar.

2

Base64.Encoder statis getEncoder()

Mengembalikan Base64.Encoder yang dikodekan menggunakan skema pengkodean base64 tipe Dasar.

3

Base64.Decoder statis getMimeDecoder()

Mengembalikan Base64.Decoder yang mendekode menggunakan skema dekode base64 tipe MIME.

4

Base64.Encoder statis getMimeEncoder()

Mengembalikan Base64.Encoder yang dikodekan menggunakan skema pengkodean base64 tipe MIME.

5

Base64.Encoder statis getMimeEncoder(int lineLength, byte[] lineSeparator)

Mengembalikan Base64.Encoder yang dikodekan menggunakan skema pengkodean base64 tipe MIME dengan panjang baris dan pemisah baris yang ditentukan.

6

Base64.Decoder statis getUrlDecoder()

Mengembalikan Base64.Decoder yang mendekode menggunakan URL dan skema pengkodean base64 tipe aman Nama File.

7

Base64.Encoder statis getUrlEncoder()

Mengembalikan Base64.Encoder yang dikodekan menggunakan skema pengkodean base64 tipe aman URL dan Nama File.

Metode yang Diwarisi

Kelas ini mewarisi metode dari kelas berikut −

Contoh Base64

Buat program Java berikut menggunakan editor pilihan Anda, misalnya C:/> JAVA.

Java8Tester.java

Demo Langsung
import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;

public class HelloWorld {

   public static void main(String args[]) {

      try {
		
         // Encode using basic encoder
         String base64encodedString = Base64.getEncoder().encodeToString(
            "TutorialsPoint?java8".getBytes("utf-8"));
         System.out.println("Base64 Encoded String (Basic) :" + base64encodedString);
		
         // Decode
         byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
		
         System.out.println("Original String: " + new String(base64decodedBytes, "utf-8"));
         base64encodedString = Base64.getUrlEncoder().encodeToString(
            "TutorialsPoint?java8".getBytes("utf-8"));
         System.out.println("Base64 Encoded String (URL) :" + base64encodedString);
		
         StringBuilder stringBuilder = new StringBuilder();
		
         for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
         }
		
         byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
         String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
         System.out.println("Base64 Encoded String (MIME) :" + mimeEncodedString);

      } catch(UnsupportedEncodingException e) {
         System.out.println("Error :" + e.getMessage());
      }
   }
}

Verifikasi Hasil

Kompilasi kelas menggunakan javac kompiler sebagai berikut

C:\JAVA>javac Java8Tester.java

Sekarang jalankan Java8Tester sebagai berikut

C:\JAVA>java Java8Tester

Ini harus menghasilkan output berikut

Base64 Encoded String (Basic) :VHV0b3JpYWxzUG9pbnQ/amF2YTg=
Original String: TutorialsPoint?java8
Base64 Encoded String (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 Encoded String (MIME) :YmU3NWY2ODktNGM5YS00ODlmLWI2MTUtZTVkOTk2YzQ1Njk1Y2EwZTg2OTEtMmRiZC00YTQ1LWJl
NTctMTI1MWUwMTk0ZWQyNDE0NDAwYjgtYTYxOS00NDY5LTllYTctNjc1YzE3YWJhZTk1MTQ2MDQz
NDItOTAyOC00ZWI0LThlOTYtZWU5YzcwNWQyYzVhMTQxMWRjYTMtY2MwNi00MzU0LTg0MTgtNGQ1
MDkwYjdiMzg2ZTY0OWU5MmUtZmNkYS00YWEwLTg0MjQtYThiOTQxNDQ2YzhhNTVhYWExZjItNjU2
Mi00YmM4LTk2ZGYtMDE4YmY5ZDZhMjkwMzM3MWUzNDMtMmQ3MS00MDczLWI0Y2UtMTQxODE0MGU5
YjdmYTVlODUxYzItN2NmOS00N2UyLWIyODQtMThlMWVkYTY4M2Q1YjE3YTMyYmItZjllMS00MTFk
LWJiM2UtM2JhYzUxYzI5OWI4

java

  1. Vektor Jawa
  2. Penggilingan – Panduan Cepat
  3. Panduan Singkat Pengembangan dan Eksekusi PM
  4. Panduan Singkat Asuransi untuk Gangguan Rantai Pasokan
  5. Panduan Cepat untuk Mesin Bending Pipa Persegi
  6. Panduan Cepat untuk Mesin Press Dingin
  7. Panduan Cepat ke Planetary Gearbox
  8. Panduan Cepat untuk Jet Mill Drill
  9. Panduan Singkat Mesin Press Servo
  10. Panduan Cepat untuk Silinder Pneumatik