Java 8 Tutorial - Belajar Java 8 Default Methods

Java 8 Tutorial Default Methods - Java 8 memperkenalkan konsep baru implementasi default method pada interface. Kemampuan ini ditambahkan untuk kompatibilitas sehingga interface yang lama dapat digunakan untuk memanfaatkan kemampuan lambda expression di Java 8. Misalnya, interface 'List' atau 'Collection' tidak memiliki deklarasi method 'forEach'. Dengan demikian, menambahkan method seperti itu hanya akan mematahkan implementasi Collection. Java 8 memperkenalkan default method sehingga interface List atau Collection dapat memiliki implementasi default untuk method forEach, dan java class yang mengimplementasikan interface ini tidak perlu menerapkan hal yang sama.

Java 8 Tutorial - Belajar Java 8 Default Methods

Baca Juga : Java 8 Tutorial - Belajar Java 8 Method Referance

Sintak

public interface Hikaru {
   default void print(){
      System.out.println("Saya Hikaru");
   }
}

Multiple Default

Dengan fungsi default dalam interface, ada kemungkinan class menerapkan dua interface dengan default method yang sama. Source code berikut menjelaskan bagaimana ambiguitas (sebuah class yang menerapkan 2 buah interface) ini dapat diatasi.

public interface Hikaru {
   default void print(){
      System.out.println("Saya Hikaru");
   }
}

public interface Pelajar {
   default void print(){
      System.out.println("Saya Seorang Pelajar");
   }
}

Solusi pertama adalah membuat method sendiri yang menggantikan implementasi default.

public class Job implements Hikaru, Pelajar {
   default void print(){
      System.out.println("Saya Hikaru Seorang Pelajar");
   }
}

Solusi kedua adalah memanggil default method dari interface yang ditentukan menggunakan super.

public class Job implements hikaru, pelajar {
   default void print(){
      Hikaru.super.print();
   }
}

Baca Juga : Java 8 Tutorial - Belajar Java 8 Functional Interface


Default Method Static

Mari kita lihat contoh penggunaan default method untuk lebih jelasnya.

public class Java8Tester {
   public static void main(String args[]){
      Hikaru hikaru = new Job();
      hikaru.print();
   }
}

interface Hikaru {
   default void print(){
      System.out.println("Saya Hikaru");
   }
}

interface Pelajar {
   default void print(){
      System.out.println("Saya Seorang Pelajar");
   }
}

class Job implements Hikaru, Pelajar {
   public void print(){
      Hikaru.super.print();
      Pelajar.super.print();
      System.out.println("Saya Memiliki Sebuah Mobil");
   }
}

Sekian tutorial java programming mengenai default method di java 8. Semoga bermanfaat dan silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
IHKY-DDAG-WL10-OWHH

Java 8 Tutorial - Belajar Java 8 Functional Interfaces

Java 8 tutorial - Functional interface memiliki satu fungsi untuk ditunjukan. Misalnya, interface yang sebanding dengan method 'compareTo' tunggal digunakan untuk tujuan perbandingan. Java 8 telah mendefinisikan banyak functional interface untuk digunakan secara ekstensif dalam lambda expression. Berikut adalah daftar functional interface yang didefinisikan dalam package java.util.Function.

Java 8 Tutorial - Belajar Java 8 Functional Interfaces

Baca Juga : Java 8 Tutorial - Fitur Baru yang Ditambahkan ke Java 8

Contoh Functional Interface

Predicate <T> interface adalah functional interface dengan method test(Object) untuk mengembalikan nilai Boolean. Interface ini menandakan bahwa suatu objek diuji menjadi true atau false.

Untuk lebih jelasnya, tulis program berikut di editor kode dan verifikasi hasilnya.

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

/**
 *
 * @author Akira
 */
public class ContohJava8Functional {
    public static void main(String args[]){
      List<integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
  
      System.out.println("Cetak Semua Angka");
      eval(list, n->true);
  
      System.out.println("Cetak Bilangan Genap");
      eval(list, n-> n%2 == 0 );
  
      System.out.println("Cetak Angka Lebih Dari 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.print(n+"\t");
         }
      }
      System.out.println("");
   }
}

Baca Juga : Java 8 Tutorial - Belajar Java 8 Method Referances

Hasil dari source code contoh functional interface diatas sebagai berikut :

Cetak Semua Angka
1 2 3 4 5 6 7 8 9 
Cetak Bilangan Genap
2 4 6 8 
Cetak Angka Lebih Dari 3:
4 5 6 7 8 9 

Sekian pembahasan java 8 tutorial mengenai penggunaan functional interfaces. Semoga bermanfaat dan silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
HWPG-SHY1-VRXY-RHEP

Java 8 Tutorial - Belajar Java 8 Method References

Java 8 Tutorial  - Method references merupakan fitur baru yang ditambahkan ke java 8. Method references membantu menunjuk metode dengan nama mereka. Method references dijelaskan dengan menggunakan simbol " ::  " (double colon). Method references dapat digunakan untuk menunjukkan jenis methode berikut :
  • Methods statis
  • Instance methods
  • Constructors menggunakan oprator new (TreeSet::new)
Java 8 Tutorial - Belajar Java 8 Method References


Baca Juga : Java 8 Tutorial - Belajar Java 8 Lambda Expression

Contoh Method References

Untuk gambaran lebih jelas, silahkan lihat contoh method referansi.

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

/**
 *
 * @author Akira
 */
public class ContohMethodReferensi {
    public static void main(String args[]){
      List nama = new ArrayList();
  
      nama.add("Akira");
      nama.add("Kevin");
      nama.add("Nuy");
      nama.add("Khudrotul");
      nama.add("Natsuki");
  
      nama.forEach(System.out::println);
   }
}

Disini kita telah memiliki method System.out :: println sebagai method reference statis.

Hasil dari program diatas :
Akira
Kevin
Nuy
Khudrotul
Natsuki

Java program diatas menampilkan isi dari ArrayList, lihat perbandingannya jika kalian menggunakan java 7.

Perhatikan contoh java program berikut :

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

/**
 *
 * @author Akira
 */
public class ContohMethodJava7 {
    public static void main(String args[]){
      List nama = new ArrayList();
  
      nama.add("Akira");
      nama.add("Kevin");
      nama.add("Nuy");
      nama.add("Khudrotul");
      nama.add("Natsuki");
  
      for(int i = 0; i < nama.size(); i++){
          System.out.println(nama.get(i));
      }
   }
}

Dalam java 8 tutorial ini, kita telah menjajaki salah satu fitur Java 8. Method reference bisa membuat kode program java kalian lebih  mudah dibaca.

Ingatlah bahwa setiap kali Anda menggunakan lambda expression, tanyakan pada diri kalian apakah lambda expression memudahkan kalian. Jika demikian, sudah saatnya mengganti dengan method reference.

Sekian pembahasan java 8 tutorial mengenai penggunaan method references.  Semoga bermanfaat dan silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
TAIE-YAQM-AGBI-ZCXU

Java 8 Tutorial - Belajar Java 8 Lambda Expression

Java 8 Tutorial - Lambda expression diperkenal di java 8 dan disebut-sebut sebagai fitur terbesar di java 8. Lambda expression memfasilitasi pemrograman fungsional, dan menyederhanakan pengembangan secara keseluruhan.

Java 8 Tutorial - Belajar Java 8 Lambda Expression


Berikut ini merupakan karakteristik dari lambda expression :
  • Optional type declaration - Tidak perlu mendeklarasikan tipe parameter. Kompilator bisa inferensi sama dari nilai parameter.
  • Optional parenthesis around parameter - Tidak perlu mendeklarasikan satu parameter dalam tanda kurung. Untuk beberapa parameter, diperlukan tanda kurung.
  • Optional curly braces - Tidak perlu menggunakan kurung kurawal dalam tubuh ekspresi jika tubuh berisi satu pernyataan.
  • Optional return keyword - Kompilator secara otomatis mengembalikan nilai jika body memiliki satu ekspresi untuk mengembalikan nilainya. Kurung kurawal diharuskan untuk menunjukkan bahwa ekspresi mengembalikan nilai.

Baca Juga : Java 8 Tutorial - Fitur Baru yang Ditambahkan ke Java 8

Contoh Penggunaan Lambda Expression


Contoh 1 Buatlah program java dengan nama java class ContohLambdaJava8

public class ContohLambdaJava8 {

    public static void main(String args[]){
      ContohLambdaJava8 obj = new ContohLambdaJava8();
  
      //dengan type declaration
      OperasiPerhitungan penjumlahan = (int a, int b) -> a + b;
  
      //tanpa type declaration
      OperasiPerhitungan pengurangan = (a, b) -> a - b;
  
      //dengan return statement dan dengan kurung kurawal
      OperasiPerhitungan perkalian = (int a, int b) -> { return a * b; };
  
      //tanpa return statement and tanpa kurung kurawal
      OperasiPerhitungan pembagian = (int a, int b) -> a / b;
  
      System.out.println("10 + 5 = " + obj.operate(10, 5, penjumlahan));
      System.out.println("10 - 5 = " + obj.operate(10, 5, pengurangan));
      System.out.println("10 x 5 = " + obj.operate(10, 5, perkalian));
      System.out.println("10 / 5 = " + obj.operate(10, 5, pembagian));
  
      //dengan parenthesis
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
  
      //tanpa parenthesis
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
  
      greetService1.sayMessage("Kitty");
      greetService2.sayMessage("Pikachu");
   }
 
   private interface OperasiPerhitungan {
      int operation(int a, int b);
   }
 
   private interface GreetingService {
      void sayMessage(String message);
   }
 
   private int operate(int a, int b, OperasiPerhitungan op){
      return op.operation(a, b);
   }

}

Contoh 2 Buatlah program java dengan nama java class TesterLambdaJava8

public class TesterLambdaJava8 {
   
   public static void main(String args[]){
      String msg = "Hello! ";
      GreetingService greetService1 = pesan -> 
      System.out.println(msg + pesan);
      greetService1.sayMessage("Kitty");
   }
 
   private interface GreetingService {
      public void sayMessage(String pesan);
   }

}

Berikut adalah poin penting yang harus diperhatikan dalam contoh lambda expression di atas.
  • Lambda expression digunakan terutama untuk mendefinisikan implementasi dari interface fungsional, yaitu interface dengan satu method saja. Pada contoh di atas, kita telah menggunakan berbagai jenis lambda exspression untuk menentukan method operation interface MathOperation. Kemudian kita telah mendefinisikan implementasi sayMessage dari interface GreetingService.
  • Lambda expression menghilangkan kebutuhan anonymous class dan memberikan kemudahan pemrograman fungsional namun memiliki powerfull yang dapat diandalkan ke java 8.

Cakupan Lambda Expression 

Dengan menggunakan lambda expression, kalian bisa merujuk ke variabel akhir atau variabel akhir yang efektif (yang ditugaskan hanya sekali). lambda expression melemparkan kesalahan kompilasi, jika sebuah variabel diberi nilai untuk kedua kalinya.

Sekian pembahasan tentang java 8 tutorial mengenai fitur lambda expression di java 8. Semoga bermanfaat dan silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
B5TI-KQF0-JGWJ-9QBQ

Belajar Java Swing Menampilkan Waktu Secara Real Time

Bagaimana cara membuat dan menampilkan waktu secara real time di java swing? Pertanyaan tersebut sering saya dengar. Caranya tidak sulit seperti yang kalian bayangkan, pada pembelajar  java kali ini saya akan menjelaskan cara membuat waktu atau timer secara real time pada pemrograman java.

Berikut tampilan timer real time pada tutorial java swing kali ini :

Belajar Java Swing Menampilkan Waktu Secara Real Time

Pada tampilan diatas terlihat dibagian kanan bawah terdapat timer (tanggal dan waktu). Timer tersebut diambil dari time komputer kalian.


Pertama, buatlah 2(dua) buah class java dengan nama LabelTime dan ContohTime.

Class LabelTime untuk membuat JLabel yang akan saya gunakan untuk membuat timer secara real time.

Berikut ini souce code untuk LabelTime :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.swing.Timer;
import javax.swing.JLabel;

/**
 *
 * @author Akira
 */
public class LabelTime extends JLabel implements ActionListener{
    
    private SimpleDateFormat format;
    private Timer timer;
    private Date date;
 
    public LabelTime() {
        timer = new Timer(1000, this);
        format = new SimpleDateFormat("dd MMMM yyyy, HH:m:ss");
        date = new Date();
        timer.start();
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        date.setTime(System.currentTimeMillis());
        this.setText(format.format(date));
    }
    
}

Class ContohTime merupakan JFrame yang digunakan untuk menerapkan timer  JLabel dari class LabelTime.


Berikut ini source code ContohTime :

import java.awt.Font;
import javax.swing.JFrame;
import net.akira.swing.LabelTime;

/**
 *
 * @author Akira
 */
public class ContohTime extends JFrame{

    private LabelTime waktu;
    
    public ContohTime() {
        setSize(350, 300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        userInterface();
        setVisible(true);
    }
    
    private void userInterface(){
        waktu = new LabelTime();
        waktu.setFont(new Font("Arial", Font.BOLD, 14));
        waktu.setHorizontalAlignment(LabelTime.RIGHT);
        
        getContentPane().add(waktu, "South");
    }
    
    public static void main(String[] args){
        ContohTime obj = new ContohTime();
    }
}


Nb. Pada contoh diatas, saya menempatkan timer berada di bagian bawah (BorderLayout South). Kalian dapat mengubah letak dari timer tersebut.

Sekian tutorial pembelajaran java swing cara membuat dan menampilkan waktu secara real time. Semoga bermanfaat dan silahkan tinggalkan komentar.

Copyrighted.com Registered & Protected 
WNFC-Q2E1-UE1W-FTVN

Belajar Database PostgreSQL - Klausa WITH

Pada database tutorial PostgreSQL kali ini saya akan membahas mengenai klausa WITH. Klausa WITH menyediakan cara untuk menulis pernyataan tambahan untuk digunakan dalam query yang lebih besar. Ini membantu dalam query yang rumit dan besar menjadi bentuk yang lebih sederhana sehingga mudah dibaca. Pernyataan-pernyataan ini, yang sering disebut sebagai CTE (Common Table Expressions). Klausa WITH juga dapat diartikan sebagai mendefinisikan tabel sementara yang ada hanya untuk suatu query.

Belajar Klausa WITH di PostgreSQL


Klausa WITH menjadi CTE query, sangat berguna ketika subquery dijalankan beberapa kali. Hal ini sama-sama membantu di tempat tabel sementara. Klausa WITH harus didefinisikan terlebih dahulu sebelum digunakan dalam query.

Baca Juga : Contoh Penggunaan Join pada PostgreSQL

Sintak:
Sintaks dasar klausa WITH adalah sebagai berikut:

WITH
          name_for_summary_data AS(
                  SELECT Statement
           )
SELECT columns
FROM name_for_summary_data;

Catatan : name_for_summary_data adalah nama diberikan untuk klausa WITH.

Kalian dapat merubah atau memodifikasi data dengan statement(INSERT, UPDATE atau DELETE) di WITH. Penggunaan WITH memungkinkan kalian melakukan beberapa operasi berbeda dalam query yang sama.

Buatlah sebuah database, kemudian eksekusi query dibawah ini :
CREATE TABLE COMPANY(
                ID INT           PRIMARY KEY        NOT NULL,
                NAMA           TEXT                        NOT NULL,
                USIA              INT                          NOT NULL,
                ALAMAT       CHAR(50),
                GAJI              REAL
);

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (1, 'Dedi', 32, 'California', 20000.00 );

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (2, 'Akira', 28, 'Texas', 15000.00 );

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (3, 'Kevin', 23, 'Norway', 20000.00 );

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (4, 'Nuy', 25, 'Rich-Mond ', 65000.00 );

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (5, 'Ade', 24, 'Texas', 85000.00 );

INSERT INTO COMPANY (ID, NAMA, USIA, ALAMAT, GAJI) VALUES (6, 'Eris', 19, 'South-Hall', 45000.00 );

INSERT INTO COMPANY VALUES (7, 'Cui', 23, 'Houston', 10000.00 );

Query diatas berfungsi untuk membuat tabel COMPANY dan ditambahkan 7(tujuh) buah record.

Contoh Penggunaan Klausa WITH

WITH CTE AS(
            SELECT ID, NAMA, USIA, ALAMAT, GAJI
            FROM COMPANY)
SELECT * FROM CTE;

Query PostgreSQL diatas akan menghasilkan output berikut :

 id | nama  | usia|  alamat   | gaji
----+-------+-----+-----------+--------
  1 | Dedi  |  32 | California|  20000
  2 | Akira |  28 | Texas     |  15000
  3 | Kevin |  23 | Norway    |  20000
  4 | Nuy   |  25 | Rich-Mond |  65000
  5 | Ade   |  24 | Texas     |  85000
  6 | Eris  |  19 | South-Hall|  45000
  7 | Cui   |  23 | Houston   |  10000

Baca Juga : Contoh Penggunaan Order By pada PostgreSQL

Copyrighted.com Registered & Protected 
AJAW-5EQN-NQ3L-AORQ

Java 8 Tutorial - Fitur Baru Yang Ditambahkan ke java 8

JAVA 8 (jdk 1.8) adalah rilis utama pengembangan bahasa pemrograman java. Versi awalnya dirilis pada tanggal 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 Yang Ditambahkan ke java 8

Fitur Java 8

Terdapat puluh fitur yang ditambahkan ke java 8, berikut fitur fitur yang paling signifikan :

  • Lambda expression - Menambahkan kemampuan pemrosesan fungsional ke Java.
  • Method references - Mengacu fungsi dengan memanggil secara langsung. Menggunakan fungsi sebagai parameter.
  • Default method - Interface memiliki implementasi metode default.
  • New tools - Alat dan utilitas kompiler baru ditambahkan seperti 'jdeps' untuk mengetahui dependensi.
  • Stream API - Stream API baru untuk memfasilitasi proses pipeline.
  • Date Time API - peningkatan pada date time API.
  • Optional - Penekanan pada praktik terbaik untuk menangani nilai null dengan benar.
  • Nashorn, JavaScript Engine - Mesin berbasis Java untuk mengeksekusi kode JavaScript.

Seiring dengan fitur baru ini, banyak peningkatan fitur dilakukan pada tingkat kompilator dan JVM.

Gaya Pemrograman

Java 8 diharapkan bisa mengubah cara programmer mengkode programnya. Untuk perbandingan singkat antara Java 7 dan Java 8, mari kita lihat program pengurutan yang ditulis dengan sintaks Java 7 dan Java 8.

Berikut ini contoh program perbandingan antara Java 7 dan Java 8 :

Contoh Program Java 7

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

/**
 *
 * @author Akira
 */
public class ContohJava7 {
    public static void main(String[] args){
        List<String> name = new ArrayList<>();
        name.add("Eris");
        name.add("Natsuki");
        name.add("Kevin");
        name.add("Dedi Diantoro");
        name.add("Akira");
        
        ContohJava7 obj = new ContohJava7();
        obj.sortingJava7(name);
        System.out.println(name);
    }
    
    private void sortingJava7(List<String> list){
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return s1.compareTo(s2);
            }
        });
    }
}

Output : [Akira, Dedi Diantoro, Eris, Kevin, Natsuki]

Contoh Program Java 8

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

/**
 *
 * @author Akira
 */
public class ContohJava8 {
    public static void main(String[] args){
        List<String> name = new ArrayList<>();
        name.add("Natsuki");
        name.add("Dedi Diantoro");
        name.add("Kevin");
        name.add("Eris");
        name.add("Akira");
        
        ContohJava8 obj = new ContohJava8();
        obj.sortingJava8(name);
        System.out.println(name);
    }
    
    private void sortingJava8(List<String> list){
        Collections.sort(list, (s1, s2) -> s1.compareTo(s2));
    }
}

Output : [Akira, Dedi Diantoro, Eris, Kevin, Natsuki]

Disini method sortingJava8() menggunakan fungsi sort dengan Lambda expression sebagai parameter untuk mendapatkan kriteria pemilahan.

Copyrighted.com Registered & Protected 
QP5X-VCCF-SNJG-QGCH