Spring Boot First Application

Membuat aplikasi pertama dengan menggunakan Spring Boot, sebelumnya kita telah membuat project Spring Boot dengan menggunakan Spring Boot Initializr. Kali ini kita akan membuat aplikasi pertama kita dengan menggunakan project yang sebelumnya telah kita buat, tambahkan baris code berikut pada file pom.xml

<dependencies>
...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
...
</dependencies>

Ubah Application.java (main program) menjadi seperti berikut :

@RestController
@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

	@RequestMapping("/")
	public String first(){
		return "My First Spring Boot Application";
	}

}

Untuk menjalankan Spring Boot bisa menggunakan perintah berikut

Maven

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v3.1.2)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Application in 0.906 seconds (process running for 6.514)

Gradle

$ gradle bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v3.1.2)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Application in 0.906 seconds (process running for 6.514)
2023-07-31T21:17:13.357+07:00  INFO 16192 --- [           main] com.hyvercode.spring.Application         : No active profile set, falling back to 1 default profile: "default"      
2023-07-31T21:17:14.302+07:00  INFO 16192 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-07-31T21:17:14.313+07:00  INFO 16192 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-07-31T21:17:14.314+07:00  INFO 16192 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.11]
2023-07-31T21:17:14.434+07:00  INFO 16192 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-07-31T21:17:14.435+07:00  INFO 16192 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1017 ms
2023-07-31T21:17:14.777+07:00  INFO 16192 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-07-31T21:17:14.786+07:00  INFO 16192 --- [           main] com.hyvercode.spring.Application         : Started Application in 1.851 seconds (process running for 2.245)

Jika tidak terjadi kesalahan saat menjalankan Spring Boot maka kita bisa akses lewat browser localhost:8080

Jika kita lihat pada class main jaba kita menambahkan @RestController dan @RequestMapping, ini adalah stereotype annotation, @RestController adalah anotasi yang memberi tahu Spring untuk merender string yang dihasilkan langsung kembali ke pemanggil. sedangkan @RequestMappinf(“/”) sebagai routing HTTP request / path untuk mengeksekusi methoe firts() yang telah kita buat.

Membuat Execute Jar

Untuk membuat file execute jar, kita harus menambahkan denpedency spring-boot-maven-plugin pada file pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

jalankan perintah berikut mvn package

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/spring-boot-tutorial-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:3.1.2:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Buka folder target maka kita akan mendapatkan file spring-boot-tutorial-0.0.1-SNAPSHOT.jar untuk memperkecil file tersebut jalankan perintah berikut “:

$ jar tvf target/spring-boot-tutorial-0.0.1-SNAPSHOT.jar

Sekarang kita bisa menjalakan file jar dengan melakukan perintah seperti perintah menjalankan file jar pada aplikasi java umumnya :

$ java -jar target/spring-boot-tutorial-0.0.1-SNAPSHOT.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v3.1.2)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Application in 0.999 seconds (process running for 1.253)

Jika tidak terjadi kesalahan maka kita bisa mengakses lewat browser localhost:8080

Sample source code bisa di download di github-hyvercode

hyvercode

Spring Boot Introduction

Spring muncul pada tahun 2003 sebagai respons terhadap kompleksitas spesifikasi J2EE . Sementara beberapa orang menganggap Java EE dan Spring berbeda, Spring pada kenyataannya adalah pelengkap bagi Java EE. Model pemrograman Spring tidak mencakup spesifikasi platform Java EE melainkan, terintegrasi dengan spesifikasi individual yang dipilih dengan cermat :

(more…)

hyvercode

Java Loop1

Kali ini kita akan menggunakan loops untuk membuat simple problem math.

Task

Ada bilangan integer N , print 10 kali, dimana setiap perulangan N x i (where 1<=10 i <=10) harus dicetak N x i =result.

Input Format

Single Integer N

Constraints

2 <= N <=20

Sample Input

2

Code

import java.util.Scanner;

public class Loops1 {
    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int N = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
        int result=0;
        for(int i=1;i<=10;i++){
            result=N*i;
            System.out.println(N+" x "+i+" = "+result);
        }

        scanner.close();
    }
}

Output

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20

hyvercode

Pick Number Java Application

Hallo semua, kali ini saya akan membuat sebuah aplikasi pick-number, ini adalah program sederhana dimana user dan system berlomba untuk mendapatkan nilai tertinggi dari random number yang tersedia.

Buat sebuah file java App.java kemudian tulis syntax atau script java berikut:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class App {
    public static void main( String[] args ) {
        Scanner keyboard = new Scanner(System.in);
        Random r = new Random();
        System.out.println( "Pick a number between 10 - 20");
        int pickNumber = keyboard.nextInt();
        List<Integer> result = new ArrayList<>();
        if(pickNumber <10 || pickNumber >20){
            System.out.println( "\n==== Please pick a number between 10 - 20 !");
            System.exit(1);
        }
        for(int i=0;i<10;i++){
            result.add(r.nextInt(21-pickNumber)+pickNumber);
        }

        int userPick;
        int aiPick;
        int sumUser=0;
        int sumAi=0;
        int ai;
       while(result.size()!=0){
            System.out.println("List "+result.toString().replace(","," ").replace("[","").replace("]",""));
            System.out.println("Pick a number from most left ot right ");
            userPick = keyboard.nextInt();
            try {
                aiPick =result.indexOf(userPick);
                if(result.size()<aiPick){
                    System.out.println("Left");
                    aiPick =result.indexOf(userPick-2);
                }
                result.remove(Integer.valueOf(userPick));
                if(result.size()==aiPick){
                    ai=result.get(aiPick-1);
                    System.out.println("Rigth "+aiPick);
                }else{
                    ai=result.get(aiPick);
                }

                result.remove(Integer.valueOf(ai));
                sumUser =sumUser+userPick;
                sumAi = sumAi+ai;
                System.out.println("Your pick "+userPick);
                System.out.println("AI pick "+ai);
                System.out.println("Sum User "+sumUser);
                System.out.println("Sum AI "+sumAi);
                System.out.println("");
            }catch (Exception e){
                System.out.println("\n==== Please pick number from list!\n");
                System.exit(1);
            }
        }

        String win = sumUser<sumAi?"Game Over, You Lose":"Congratulation ! You win\n";
        System.out.println(win);
    }
}

untuk menjalankanya masuk ke terminal ketik perintah

$javac App.java
$java App

masukan angka antara 10 dan 20 maka system akan membuat list random angka, kemudian pilih salah satu angka yang terdapat pada list, seperti berikut:

Pick a number between 10 - 20
10
List 10  10  20  11  18  14  12  18  20  16
Pick a number from most left ot right 
10
Your pick 10
AI pick 10
Sum User 10
Sum AI 10

List 20  11  18  14  12  18  20  16
Pick a number from most left ot right 
20
Your pick 20
AI pick 11
Sum User 30
Sum AI 21

List 18  14  12  18  20  16
Pick a number from most left ot right 
12
Your pick 12
AI pick 18
Sum User 42
Sum AI 39

List 14  18  20  16
Pick a number from most left ot right 
18
Your pick 18
AI pick 20
Sum User 60
Sum AI 59

List 14  16
Pick a number from most left ot right 
16
Rigth 1
Your pick 16
AI pick 14
Sum User 76
Sum AI 73

Congratulation ! You win

Process finished with exit code 0

Source code project bisa didownload di GitHub pick-number

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