Spring Boot Sample Rest API

Membuat simple REST API pertama menggunakan spring boot dengan API spek berikut:

  1. Membuat dan menampilkan List Buku
  2. Membuat dan menampilkan data buku berdasarkan bookId
  1. Buat package controller seperti berikut

2. Buat class BookController

3. Buat Package model dan class BookResponse

package com.hyvercode.spring.model.response;


import java.io.Serializable;

public class BookResponse implements Serializable {

    private int bookId;
    private String bookName;

    public BookResponse(int bookId, String bookName) {
        this.bookId = bookId;
        this.bookName = bookName;
    }

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
}

4. Buat API “books” dan endpoint untuk menampilkan data buku dan mengambil data buku berdasarakn bookId

package com.hyvercode.spring.controller;

import com.hyvercode.spring.model.response.BookResponse;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/books")
public class BookController {
    private final List<BookResponse> bookResponses = Arrays.asList(new BookResponse(1,"Java Basic"),new BookResponse(2,"Spring Boot"));

    @GetMapping(value = "",produces = MediaType.APPLICATION_JSON_VALUE)
    public List<BookResponse> getBooks(){
        return bookResponses.stream().toList();
    }

    @GetMapping(value = "/{bookId}",produces = MediaType.APPLICATION_JSON_VALUE)
    public List<BookResponse> getBook(@PathVariable("bookId") int bookId){
        return bookResponses.stream()
                .filter(bookResponse -> bookResponse.getBookId()==bookId)
                .toList();
    }
}

Selanjutnya jalankan aplikasi dengan perintah berikut:

mvn spring-boot:run

Bukan browser atau Postman akses url http://localhost:8080/books

Bukan browser atau Postman akses url http://localhost:8080/books/1

Sample source code bisa di download di github-hyvercode

hyvercode

Java Operator

Operators adalah simbol atau tanda yang diletakan pada dua operand (data) yang dapat mengahasilkan sebuah hasil, operator berupa simbol yang digunakan untuk suatu expresi dengan melibatkan satu atau beberapa operand.

Bahasa pemograman Java mensuport tipe operator :

  • Arithmetic Operators
  • Comparison Operators
  • Logical Operators
  • Assigment Operators
  • Conditional Operators

Arithmetic Operators

Arithmetic operators adalah operator yang digunakan untuk operasi aritmatika

OperatorDescriptionExample
+Penambahan 2 operandsA+ B
Pengurangan operand kedua terhadapa operand pertamaA-b
*PerkalianA*B
/PembagianA/B
%Modulus atau sisa bagiA%B
++Increment penambahan nilai integerA++
Decrement pengurangan nilai integerB–

Comparison Operators

Comparison Operators adalah operator yang bertugas untuk membandingkan antara dua nilai, operator ini juga dikenal dengan operator relasi.

OperatorDescriptionExample
==Sama denganA==B
!=Tidak sama denganA!=B
>Lebih BesarA>B
<Lebih KecilA<B
>=Lebih besar atau sama denganA>=B
<=Lebih kecil atau sama denganA<=B

Logical Operators

Logical operators adalah operator yang digunakan untuk operasi logika

OperatorDescriptionExample
andLogical AND jika kedua operand true maka hasilnya adalah true(A and B) is true
orLogical OR , jika salah satu benar( A or B) is trus
&&Logical && jika kedua nilai tidak kosong maka hasilnya adalah true(A && B) is true
||Logical OR jika kedua nilai tisak kosong maka hasilnya true(A || B) is true
!Locagal NOT , negasi atau kebalikan!(A & B) is false

Assigment Operators

Assigment Operator ( Operator penugasan) adalaha operator yang memiliki fungsi untuk memberikan tugas pada variable tertentu, biasanya untuk mengisi nilai

OperatorDescriptionExample
=Pengisian nilaiA=B
+=Pengisian dan penambahan nilaiA+=B
-=Pengisian dan pengurangan nilaiA-=B
*=Pengisian dan perkalian nilaiA*=B
/=Pengisian dan pembagian nilaiA/=B
%=Pengisin dan sisa bagi atau modulusA %=B

Conditional Operators

Conditinal operator adalah operator yang unik seperti membuat sebuah pertanyaan, simbolnya mengunakan tanda (?) dan (:) sebagai pemisah jawaban.

String status = "A" ? "Good":"Not Good";

hyvercode

Java Data Types

Tipe data adalah klasifkasi data yang menentukan berbagai ukuran dan nilai yang dapat disimpan dalam suatu variable.

Pada bahasa pemograman Java tipe data dibagi menjadi dua jenis :

Primitive Data Types

Tipe data primitive adalah tipe data paling mendasara pada bahasa pemograman java ada 8 jenis tipe data primitive :

Tipe DataDescriptionExample
booleanTipe data yang memiliki dua nilai yaitu true dan false true or false
bytebyte adalah tipe dat anumerik yang memiliki panjang 8-bitbyte a=100
shortshort adalah tipe data numerik yang memiliki panjang 16-bit short b=10000
intint adalah tipe data numerik yang memiliki panjang 32-bit int c=100000
long adalah tipe data numerik yang memiliki panjang 64-bit long d=100000L
float adalah tipe data numerik dengan decimal point yang memiliki panjang 32-bit float e=234.5f
double double adalah tipe data numerik dengan decimal point yang memiliki panjang 64-bit double f=123.5
char char adalah tipe data unicode karakter yang memiliki panjang 16-bit char message = “A”

Non Primitive Data Types

Non primitive data type adalah tipe data yang secara default tidak terdefinisi oleh suatu bahasa pemograman melainkan didefinisikan sendiri oleh programer atau bisa juga disebut reference object seperti String class,interface dan array.

hyvercode

Java Variable

Dalam bahasa pemograman variable adalah suatu lokasi peyimpanan ( di dalam memori komputer ) yang berisikan nilai atau informasi yang nilainnya tidak diketahui maupun telah diketahui. Dalam definisi umumnya variable adalah kode program yang digunakan untuk menampung nilai tertentu, pada bahasa pemograman java terdapat tiga tipe variable :

Local Variable

Local variable adalah variable yang dideklarasikan atau dibuat didalam sebuah methode, variable ini hanya bisa diakses oleh methode itu sendiri, local variable juga tidaj bisa mengunakan keyword static.

public class Vehicle {
	public void run() {
		int speed =90;  // local variable
	}
}

Instance Variable

Instance variable adalah variable yang dideklarasikan diluar methode, instance variable juga tidak bisa mengunakan keyword static.

public class Vehicle {
         int speed =90;  // instance variable
	public void run() {
		
	}
}

Static Variable

Static variable adalah variable yang di deklarasikan mengunakan keyword static, kita bisa mengunakan variable static ketika class itu dibuat instance pada class yang lain. Alokasi memori untuk variabel statis hanya terjadi sekali ketika kelas dimuat dalam memori.

public class Vehicle {
        static int speed =90;  // instance variable
	public void run() {
		
	}
}

hyvercode

Keyword Bahasa Pemograman Java

 

Kosa kata (keyword) bahasa pemograman java tidak sebanyak bahasa indonesia yang mempunyai jutaan kosa kata, Java hanya mempunyai 44 buah kosa kata (keyword). Berikut ini adalah daftar keyword pada bahasa pemograman java :

abstract Boolean break byte case catch
char class conts continue default do
double else extends final finally float
for goto if implements import instanceof
int interface long native new package
private protected Public return short static
strictfp super switch synchronized this throw
throws transient try void volatile while
assert enum        

  1. abstract , kata kunci yang digunakan untuk mendeklarasikan class, Abstract Class memiliki impelentasi seperti Interface.
  2. Boolean, kata kunci yang digunakan untuk mendeklarasikan tipe data Boolean (true/false).
  3. break, kata kunci yang digunakan untuk memberhentikan /memutus loop atau switch statement.
  4. byte, kata kunci yang digunakan untuk mendeklarasikan tipe data byte 8-bit nilai data.
  5. case, kata kunci yang digunakan padat switch statement.
  6. catch, kata kunci yang digunakan untuk generat exception dalam block try.
  7. char, kata kunci yang digunakan untuk mendeklarasikan tipe variable 16-bit unicode character.
  8. class, kata kunci yang digunakan untuk mendeklarasikan sebuah class.
  9. continue, kata kunci yang digunakan untuk melanjutkan sebuah prosess looping.
  10. default, kata kunci yang digunakan untuk membuat block spesipic pada block switch.
  11. do, kata kunci yang digunakan sebagai kontrol statement pada loop.
  12. double, kata kunci yang digunakan untuk mebuat tipe data double 64-bit floating-point numbers.
  13. else, kata kunci yang digunakan untuk pencabangan dalah block if.
  14. enum, kata kunci yang digunakan untuk membuat sebuah contants, enum memiliki contructor yang memiliki acsess modifier private atau default.
  15. extends, kata kunci yang digunakan untuk membuar class atau interface turunan.
  16. final, kata kunci yang digunakan untuk menyatakan constant.
  17. finally, kata kunci yang digunakan pada bloc try-catch.
  18. float, kata kunci yang digunakan untuk membuat variable 32-bit floating-point number.
  19. for, kata kunci yang digunakan untuk membaut block looping .
  20. if, kata kunci yang digunakan untuk menyatakan atau membuat sebuah block pernyataan.
  21. implements, kata kunci yang digunakan untuk mengimplementasikan sebuah interface.
  22. import, kata kunci yang digunakan mengakses sebuah class atau interface dari package lain.
  23. instanceof, kata kunci yang digunakan untuk mengecek apakah sebuah object instance dari sebuah class atau interface.
  24. int, kata kunci yang digunakan untuk membuat variable dengan tipe data 32-bit signed integer.
  25. interface, kata kunci yang digunakan untuk membuat sebuah class interface.
  26. long, kata kunci yang digunakan untuk membuta varibale dengan tipe data 64-bit integer.
  27. native, kata kunci yang digunakan untuk mengimplementasikan native code mengunakan JNI ( Java Native Interface ).
  28. new, kata kunci yang digunakan untuk membuat instance object.
  29. null, kata kunci yang digunakan untuk menindikasikan pernytaan tidak mereferensentasikan apapun.
  30. package, kata kunci yang digunakan untuk membuat sebuah folder dalam structur program java.
  31. private, kata kunci yang digunakan untuk mebuat acsess modifier sebuah class,methode,variable atau interface memiliki sifat private.
  32. protected, kata kunci yang digunakan untuk mebuat acsess modifier sebuah class,methode,variable atau interface memiliki sifat protected.
  33. public, kata kunci yang digunakan untuk mebuat acsess modifier sebuah class,methode,variable atau interface memiliki sifat public.
  34. return, kata kunci yang digunakan untuk memebuat sebuah methode memiliki nilai balikan.
  35. short, kata kunci yang digunakan untuk mendeklarasikan tipe data 16-bit integer.
  36. static, kata kunci yang digunakan untuk mebuat variable atau methode dalam sebuah class berisapat static dalam java memory management.
  37. strctfp, kata kunci yang digunakan restrict kalkulasi floating-point .
  38. super, kata kunci yang digunakan sebuah class turunan mengunakan variable pada class parent.
  39. swicth, kata kunci yang digunakan untuk membuat sebuah block pernyataan untuk melakukan equlity terhadap variable.
  40. synchronized, kata kunci yang digunakan untuk mensingkronasikan sebuah methode pada java mutlithreaded.
  41. this, kata kunci yang digunakan untuk menyatakan object merujuk pada Contructor class itu sendiri.
  42. throw, digunakan untuk melepar exception.
  43. throws, kata kunci yang digunakan untuk melempar exception pada block try-catch.
  44. transients, kata kunci yang digunakan untuk serialization jika kita mendefiniskan data member sebagai transients.
  45. try, kata kunci yang digunakan untuk membuat sebuah block exception.
  46. void, kata kunci yang digunakan membuat methode yang meiliki tidak memiliki nilai balikan.
  47. volatile, kata kunci yang digunakan membuat variable yang bersifat asynchronous.
  48. while, kata kunci yang digunakan untuk membuat block loop, jika number iterasi tidak tetap.

hyvercode

Java Loop Control

Loop dalam Java digunakan untuk mengeksekusi blok kode yang sama beberapa kali. Java mendukung empat jenis loop berikut :

For Loop

For Loop digunakan ketika kita megetahui berapa lama/banyak sebuah pernyataan itu di ekseskusi.

for(inirialization; condition;increment){
    // some code for execute
}

While Loop Statement

While loop akan di eksekusi selama expresion bernilai true, jika expresion true kemudian block code akan di eksekusi setelah kode di eksekusi expresion akan di evaluasi ulang sampai expresion bernilai false.

while (condition){
  // some code
}

Do While Statement

Do While adalah pernyataan yang akan mengeksesuki blok satu persatu kemudian melakukan perlulangan sampai kondisi true

do{
  code to be execute
}while(condition);

Foreach Loop Statement

Pernyataan foreach digunakan untuk loop melalui array. Untuk setiap pass, nilai elemen array saat ini ditetapkan ke $ value dan pointer array digerakkan oleh satu dan di pass berikutnya elemen berikutnya akan diproses.

foreach(array as value){
   code to be execute;
}

Break Statement

Break digunakan untuk menghentikan eksekusi loop sebelum waktunya.Pernyataan break terletak di dalam blok pernyataan. Ini memberi Anda kontrol penuh dan kapan pun Anda ingin keluar dari loop Anda bisa keluar. Setelah keluar dari loop, pernyataan langsung ke loop akan dieksekusi.

while (condition){
  // some code
   if(condition) break;
}

Continue Statement

Continue digunakan untuk menghentikan iterasi loop saat ini tetapi tidak menghentikan loop. Sama seperti pernyataan break, pernyataan continue terletak di dalam blok pernyataan yang berisi kode yang dijalankan loop, didahului oleh tes kondisional.

foreach(array as value){
    if(value == 3 )continue;
}
   

hyvercode

Java Modifier Types

Java Modifier adalah membatasi ruang lingkup kelas, variable, konstruktor, methode atau anggota data, untuk mengunakan modifier kita perlu mendifiniskan keyword modifier pada class, methode atau variable Bahasa pemograman java memiliki dua tipe modifier :

Access Control Modifier

Access Control Modifier digunakan untuk membatasi ruang lingkup/level pada class, variable, methode dan constructor :

  • Default, tidak perlu modifier karena secara default java melakukannya.
  • Private, hanya bisa diakses oleh class itu sendiri.
  • Protected hanya bisa dikases oleh package atau subclass.
  • Public bisa diakses secara public.

Non Access Modifier

Bahasa pemograman java menyediakan no-access modifier untuk Fungsionalitas:

  • static modifier untuk mentukan tipe methode atau variable.
  • final modifier digunakan untuk menentukan tipe class, methode dan variable.
  • abstract modifier digunakan untuk menentukan tipe class atau methode.
  • synchronized and volatile modifier digunakan untuk threads.

hyvercode

Bagaimana Program Java Bekerja

1. Apa yang terjadi ketika program di compile?

Ketika di compile, file .java, di compile mengunakan java compiler ( tidak interaksi dengan OS ) dan merubah file.java menjadi bytecode.

contoh ilustrasi compiler berjalan

PlantUML Syntax:
:Simple.java;
:Compiler;
:Simple.class;

2. Apa yang terjadi ketika runtime?

PlantUML Syntax::ClassFile;
:ClassLoader;
:Bytecode Verified;
:Interpreter;

  1. Classloader  adalah bagian dari system JVM yang digunakan untuk meload class java.
  2. Bytecode Verified , melakukan cek apakah code ilegal dan memiliki hak akses terhadap object.
  3. Interpretermembaca bytecode dan menjalankan sesuai intruksi.

hyvercode

Fitur Java

Beberapa Fitur Java Adalah Sebagai Berikut

  1. Sederhana, Menurut Sun, Bahasa Java sederhana karena syntax java didasarkan pada C++ (Sehingga memudahkan para programer setelah belajar C++) dihapusnya fitur yang membingungkan dan / atau Jarang di pakai misalnya , pointer, eksplisit, Operator Overloading dll
  2. Berorientasi Objek, Berarti kita mengatur perangkat lunak sebagai kombinasi dari berbagai jenis objek yang menggabungkan data dan perilaku setiap objek. Pemograman berorientasi objek (OOP) adalah metodologi yang mempermudah pengembangan perangkat lunak dan pemeliharaannya.
  3. Platform Independen, Sebuah paltfrom adalah perangkat keras atau perangkat lunak lingkungan dimana program berjalan. Ada dua jenis platform bebasis hardware dan berbasis software. Java menyediakan platform berbasis sotfware, platform java berbeda dari kebanyakan platform lain dalam arti bahwa itu sebuah platform perangkat lunak yang berjalan di atas platform Runtime Environment dan API (Aplication Programing Interface). Kode Java dapat dijalankan pada berbagai platform Windows,Linux, Sun Solaris, Mac OS dll. Java dicompilasi oleh compiler dan diubah menjadi bytcode .
  4. Aman, Java dikatanakana aman karena
      • Tidak ada pointer Eksplisit
      • Program berjalan dalam sandbox mesin virtual
      • Class Loader, menambahkan keamanan dengan memisahkan paket untuk kelas sistem file lokal.
      • Bytecode Verifier , Mengecak fragment kode untuk kode ilegal yang dapat menggangu hak akses ke objek.
      • Security Manager, menentukan sumber apa kelas yang dapat menulis dan membaca ke disk loka.

    keamanan disediakan oleh bahasa java. Beberapa keamanan juga dapat disediakan oleh pengembang aplikasi melalui SSL, JAAS, kriptografi dll.

  5. Kuat, Java mengunakan manajemen memori yang kuat Ada kurangnya pointer yang menghindari masalah keamanan. Ada pengumpulan sampah otomatis di java. Ada pengecualian penanganan dan mekanisme memeriksa jenis di java. Semua titik-titik ini membuat java kuat.
  6. Arsitektural Netral, Tidak ada implementasi tergantung fitur misalnya ukuran tipe primitif diatur.
  7. Portable, Kode Java bisa berjalan di platform apapun
  8. Kinerja Tinggi, Java lenih cepat dari bahasa lainya.
  9. Mudah Didistribusikan, kita bisa membuat aplikasi terdistribusi di java. RMI dan EJB dugunakan untuk membuat aplikasi terdistribusi.
  10. Multitread, Sebuah thread seperti sebuah program terpisah, mengeksekusi secara bersamaan. Kita dapat menulis program Java yang menangani banyak tugas sekaligus dengan mendefinisikan beberapa thread. Keuntungan utama dari multi-threading adalah bahwa saham memori yang sama. Benang penting untuk multi-media, aplikasi Web dll.

hyvercode

Sejarah Singkat Java

Sejarah singkat java, Java Pertama kali dimulai dari Project Green Team. Green Team memulai tugas revolusioner untuk mengembangkan bahasa perangkat digital seperti set-top box, televisi dll.

Saat ini, Java digunakan dalam pemrograman internet, perangkat mobile, games, solusi e-bisnis dll.

Berikut beberapa point yang mengambarkan sejarah java :

James Gosling, Mike Sheridan dan Patrick Naughton memulai projek bahasa java pada bulan Juni 1991, sebuah Team Kecil Para enggineers yang dinamai Green Team.Bahasa Java awalnya didesain untuk sistem yang kecil, embedded system (sistem tertanam) dalam peralatan electroniks seperti set-top box.Bahasa java pertama kali diberi nama “Greentalk” oelh James Gosling dan memiliki extensi file (.gt).Kemudian setelah itu, di sebut juga Oak (Nama Jenis Pohon ) dan dikembangkan sebagai bagian dari proyek Green.Oak adalah simbol dari kekuatan dan terpilih sebagai pohon nasional dibanyak negara seperti Amerika Serikat, Prancis, Jerman, Rumania dll.Pada tahun 1995, Oak berganti nama menjadi Java karena itu sudah menjadi merek dagang dari Oak Teknologi. Kemudian Tim berkumpul unutk memilh nama baru, kata-kata yang di sarankan harus mengandung atau memiliki makna “dynamic”, “revolutionary”, “Silk”, “jolt”, “DNA” dll mencerminkan esensi dari teknologi: revolusioner, dinamis, hidup, keren, unik, dan mudah mengeja dan menyenangkan untuk mengatakan. Menurut James Gosling “Java adalah salah satu pilihan atas bersama dengan Silk “. karena kata  java begitu unik, sebagian besar anggota tim menyukai nama java. Java (Jawa) adalah sebuah pulau di Indonesia di mana kopi pertama diproduksi (disebut java kopi). Perhatikan bahwa Java hanya nama bukan singkatan. Awalnya dikembangkan oleh James Gosling di Sun Microsystems (yang sekarang menjadi anak perusahaan dari Oracle Corporation) dan dirilis pada tahun 1995. Pada tahun 1995, majalah Time menyebutkan Java salah satu dari Sepuluh Terbaik Produk 1995 . JDK 1.0 dirilis pada (23 Januari, 1996).

Java Versi Sejarah

Ada banyak versi java yang telah dirilis. Saat rilis stabil dari Java adalah Java SE 8.

  1. JDK Alpha dan Beta (1995)
  2. JDK 1.0 (23 Januari 1996)
  3. JDK 1.1 (19 Februari 1997)
  4. J2SE 1.2 (8 Desember 1998)
  5. J2SE 1.3 (8 Mei 2000)
  6. J2SE 1.4 (6 Februari 2002)
  7. J2SE 5.0 (30 September 2004)
  8. Java SE 6 (11 Desember 2006)
  9. Java SE 7 (28 Juli 2011)
  10. Java SE 8 (18 Maret 2014)

untuk mendapatkan update atau versi terbaru dari JDK silakan mengunjungi website resmi oracle JDK

https://www.oracle.com/java/technologies/javase-jdk14-downloads.html

hyvercode