TUGAS PERTEMUAN 9 TEKNOLOGI WEB SERVICE | SERVICE USER LOGIN

SERVICE USER LOGIN

    Secara umum layanan adalah salah satu jenis perantara untuk komunikasi antara beberapa teknologi yang berbeda, jadi di sini kami akan membuat layanan yang digunakan untuk login pengguna yang valid ke aplikasi Android.

       Di sini alur prosesnya adalah, pengguna aplikasi Android memasukkan nama pengguna dan kata sandi mereka ke aplikasi kemudian menekan tombol login, sekarang pada tombol login kami memanggil layanan PHP yang menghubungkan database MySQL dan memeriksa tabel pengguna, dan mengembalikan respons ke aplikasi Android

        Untuk membuat layanan dalam PHP kita harus membuat satu halaman dalam PHP dan juga membuat tabel "User" untuk menyimpan data pengguna dalam MySQL, jadi dengan menggunakan layanan ini kita membandingkan data pengguna yang datang dari aplikasi Android dengan tabel User dan mengembalikan hasil. Untuk membuat layanan, ikuti langkah-langkah di bawah ini.


  1.  Buat Table di MySQL untuk menyimpan pengguna. Beri nama "user" - tabel ini berisi UserName, Password, dll; Untuk membuat tabel, jalankan skrip di bawah ini.
CREATE TABLE IF NOT EXISTS `user`

     `ur_id` int(11) NOT NULL AUTO_INCREMENT, 
     `ur_username` varchar(50) NOT NULL, 
     `ur_password` varchar(50) NOT NULL, 
     `ur_status` int(11) NOT NULL, 
     PRIMARY KEY (`ur_Id`) 
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

Dengan menjalankan skrip di atas, ia akan membuat tabel seperti di bawah ini. Di sini tabel berisi kolom Id, Nama Pengguna, Kata Sandi, Status, dll.



   2.  Sekarang masukkan beberapa data sementara ke tabel ini, jadi untuk memasukkan data dalam        tabel sementara saya menjalankan skrip SQL di bawah ini.

 INSERT INTO `user` (`ur_id`,     `ur_username`,`ur_password`,`ur_status`)
 VALUES 
    (1, 'sahrul@gmail.com', 'sahrul', 1), 
    (2, 'agung@gmail.com', 'agung', 1), 
    (3, 'bandenk@gmail.com', 'bandenk', 1);  

    Setelah menjalankan skrip di atas Anda akan melihat tabel seperti di bawah ini.



 3. Sekarang kita membuat layanan PHP, jadi buat satu file PHP dan beri nama                   "service_userlogin.php".

    <?php 

  ?>

·   Sekarang kita membuat koneksi server MySQL dari php file, jadi lewati nama server, nama pengguna, kata sandi, nama database dll.

     $conn = new mysqli('localhost', 'root', ''); 
     mysqli_select_db($conn, 'db_member');  

·   Di sini kami memberikan nama server sebagai ‘localhost’, nama pengguna sebagai ‘root’, kata sandi menjadi kosong (’’), dan kami memberikan nama database sebagai ‘db_member.

·  Sekarang kita mendapatkan parameter dari aplikasi Android sehingga Anda mendapatkan parameter dari URL dengan menggunakan metode "GET". Dan periksa apakah mengandung nilai atau tidak.

if (isset($_GET[username]) && $_GET[username] != '' &isset($_GET['password']) && $_GET['password'] != '')  
   { 
   $email = $_GET[username]; 
   $password = $_GET['password'];  

·    Kami memeriksa apakah nama pengguna dan kata sandi berasal dari URL layanan dan apakah itu berisi data atau tidak, maka pertama-tama kami menyimpannya dalam variabel seperti yang ditunjukkan dalam kode di atas.

·    Di sini kita membuat kueri SQL saya untuk memeriksa apakah pengguna itu valid atau tidak dan menjalankan kueri ini dan memeriksa output dari kueri - jika ada pengguna yang valid maka kami mengirimkan userid sebagai respons layanan.

·      Dalam respon layanan kami melewati total tiga parameter.
Ø  Status (status)
Ø  Pesan (message)
Ø  Identitas pengguna (UserId)

·      Jika pengguna valid maka kami melewati Status = "Ok", Message = "Berhasil Masuk", UserId = "id pengguna apa pun yang Anda temukan".

·  Jika tidak ada pengguna dalam database dengan userid dan kata sandi ini maka kami memberikan tanggapan dengan parameter berikut seperti Status = "Tidak Oke", Message = "Masukkan kata sandi yang benar", UserId = "0";

$getData = "SELECT `ur_id`,`ur_username`,`ur_password` FROM user` WHERE `ur_username`='".$email. 
"'and `ur_password`='".$password. 
"'"; 
$result = mysqli_query($conn, $getData); 
$userId = ""; 
while ($r = mysqli_fetch_row($result)) 
    $userId = $r[0]; 
if ($result -> num_rows > 0) 
    $resp["status"] = "1"; 
    $resp["userid"] = $userId; 
    $resp["message"] = "Login successfully"; 
else 
    $resp["status"] = "-2"; 
    $resp["message"] = "Enter correct username or password"; 
  • Di sini akhirnya logika utama kita selesai tetapi sekarang kita harus membuatnya mengatur parameter "content-Type" dan meneruskannya sebagai respons JSON.
header('content-type: application/json'); 
$response["response"]=$resp; 
echo json_encode($response); 

     ·     Sekarang akhirnya kita menutup koneksi MySQL.

@mysqli_close($conn);   

  
·      Kode Lengkap Untuk file PHP "service_userlogin.php"

<?php  
    $conn = new mysqli('localhost', 'root', ''); 
    mysqli_select_db($conn, 'db_member'); 
    if (isset($_GET['username']) && $_GET['username'] != '' &&isset($_GET['password']) && $_GET['password'] != '')  
    { 
        $email      = $_GET['username']; 
        $password = $_GET['password'];  
 
        $getData = "SELECT `ur_id`,`ur_username`,`ur_password` FROM `user` WHERE `ur_username`='" .$email."' 
        and `ur_password`='".$password."'"; 
 
        $result = mysqli_query($conn,$getData); 
 
        $userId = ""; 
        while( $r = mysqli_fetch_row($result)) 
        { 
            $userId = $r[0]; 
        } 
 
        if ($result->num_rows > 0 )
        { 
            $resp["status"]  = "1"; 
            $resp["userid"]  = $userId; 
            $resp["message"] = "Login successfully"; 
        }else
        { 
            $resp["status"]  = "-2"; 
            $resp["message"] = "Enter correct username or password"; 
        } 
    } 
    else 
    { 
        $resp["status"]  = "-2"; 
        $resp["message"] = "Enter Correct username."; 
    } 
    header('content-type: application/json'); 
 
    $response["response"] = $resp; 
    echo json_encode($response); 
 
    @mysqli_close($conn);
?> 



· Sekarang kita menjalankan file php di server WAMP / XAMP dan mengirimkan nama    pengguna, kata sandi sebagai parameter dalam URL

·    url awal pertamakali file di akses



     ·   tambahkan username dan passwor yang ada di database

     ?username=sahrul@gmail.com&password=sahrul
      
     ·      url jadi seperti ini

http://localhost/web_service/service_userlogin.php?                  username=sahrul@gmail.com&password=sahrul 

·      Output

{"response":{"status":"1","userid":"1","message":"Login successfully"}} 






Terima kasih telah membaca artikel saya, jika Anda memiliki pertanyaan tentang ini Anda dapat bertanya kepada saya di bagian komentar.





PELAJAR DI 4.0 MERAWAT HARAPAN DI TENGAH PERANG INFORMASI DAN DENTUMAN DISRUPSI

PELAJAR DI 4.0 MERAWAT HARAPAN DI TENGAH PERANG INFORMASI DAN DENTUMAN DISRUPSI

Dunia bergerak..

yang telah usai :
  1. Kolonialisasi Fisik (ekspansionis)
  2. Pergerakan Nasionalisme dan Kemerdekaan
  3. Matinya Feodalisme Tradisional, dan munculnya konservatisme 'rasional' (demokrasi, Islamphobia, LGBT, pemilu, kapitalis, dll)
yang berlangsung :
  1. Matinya kebenaran (Post Truth)
  2. Global dan Lokal tak lagi superior atau superior
  3. Informasi dan Disinformasi sebagai Panglima


Isu Global, Isu aktual..
  • Wacana - wacana yang secara luas dan massif diperbincangkan diberagam belahan bumi serta memiliki dampak besar bagi sebagian besar entitas ekosistem hidup / kehidupan. Wacana yang menimbulkan ketergantungan satu sama lainnya (Interdependent). Misalnya : ancaman hilangnya energi berbahan fosil, pemanasan global, terorisme, dll
  • Selalu aktual dan aktualitas ini di tentukan oleh persebaran informasi. Kekuatan pengetahuan / kepakaran / legitimasi.



Top Ten Global Issues

1. Climate Change 
   - Global Warming
2. Communicalde Disease
   - HIV/AIDS, Malaria, TB
3. Conflicts
   - Sudan, Iraq, Ethiopia
4. Education
   - Literacy Rate
5. Financial Instability
   - Poverty, Third World Debt
6. Govermance and Corruption
   - Burma, Somalia, Chad
7. Malnutrition and Hunger
   - Africa, Haiti, Afganistan
8. Population
   - Growth, Sustainability
9. Sanitation and Water
   - Hygiene, Disease
10. Subsidies and Trade Barriers
   - Stop Economic Growth


Topik in "Global Issues"

Potential to affect a large number of people, animal, or the environment worldwide
- Racism
- Poverty
- Discrimination
- Homelessness
- Media Literacy
- Human Rights
- Peace and Conflict
- Consumer education
- Sustainability of natural resources




Identifikasi isu - isu global yang dekat dengan dunia 'pelajar', kaum milenial..?

1.
2.
3.


Konseptualisasi isu, memenangkan wacana di 4.0

1. Isu -isu Agama / Politik
2. Isu Perdamaian dan Multikultural
3. Isu ekologi : Perubahan Iklim dan Keadilan Lingkungan
4. Isu Literasi : Disrupsi, Pengetahuan, Informasi, tata baru kehidupan


Literatur memandu pengetahuan, memperkuat tindakan (individual, kolektif lokal, global)

  • Seorang pelajar tercerahkan, jalan hidupny dibimbing oleh cahaya pengetahuan.
  • Jika menginginkan pengetahuan, Anda harus mengambil bagian praktik yang mengubah realitas, (Mao Tse Tung, 1937)
  • Sebagai refleksi saya mencoba menyajikan bagaimana isu agama / wacana literatur bertumbuh - berkembang dan posisi orang - orang serta tindakan pengorganisasiannya.


#Agama/Politik

Konflik agama, peradaban, Islam vs Barat, dalam kesenjangan informasi
  • Agama viral, viral agama : anti agama dan 'agama - agama baru'
  • Bangsa majemuk dan tantangannya.
  • Majemuk dan plural dalam kebngsaan, dan dalam praktik keagamaan
  • Terorisme global "tak ada agama bagi teroris"
  • Moderasi Islam / Islam tengahan sebagai kebutuhan global

Mulim muda, Pelajar Milenial
  • Berebut 'Milenial'sebagai komoditas ekonomi politik. Juga, komoditas / komunitas agama.
  • Di saat yang bersamaan berebut kelas menengah (ekonomi sharing, inovasi, socialpreneurship, dll)
  • "Jangan kau mati, kecuali sudah mengamalkan tindakan - tindakan sebagai kaum milenial yang kreatif, inofatif dan kaya/mapan"
  • Menulis, inovasi, kemandirian adalah beberapa hal dari skill muslim milenial


You are what you read..?
  1. Bagaimana bacaan kaum muda membentuk karakternya..?
  2. Bagaimana social media yang diikutin beserta celebdigital dapat membentuk konstruksi pikiran / ideologi dan praktik sosial politik keagamaan..?
  3. Disinformasi dan kesenjangan informasi / pengetahuan menjadi persoalan.



Temuan Tim Peneliti UIN SUKA :

Berbeda dengan temuan riset terdahulu yang menemukan signifikansi literatur - literatur ideolog Islamis di kalangan aktivis dan pembaca Muslim muda, tulisan ini menunjukkan bahwa generasi Muslim yang kahir di tahun 1990an - atau dikenal dengan istilah generasi milenial - umumnya tidak lagi membaca literatur - literatur ideolog Islamis seperti para pendahulu mereka. Generasi Muslim muda baru ini lebih suka mengakses pengetahuan keislaman dari karya - karya yang ditulis oleh para penulis Muslim Indonesia yang mengapropriasi dan mengemas ide - ide Islamis tersebut ke dalam budaya pop seperti tulisan populer, novel dan komik.


Literatur - literatur kaum muda di Indonesia (baca: Milenial)
* Silahkan dilihat presentasi peneliti UIN Sunan Kalijaga (Najib Kaelani)

Agenda aksi..?
1. Penyediaan bacaan kaum milenial 'wasyatiyah'
2. Penyebaran informasi yang bernilai utama melalui beragam media
3. Mentradisikan refleksi literatur di kalangan pelajar
4. Membangun jaringan nasional, regional maupun internasional isu-isu terkait. Penertiban buku Bersama, penerjemahan buku, dll
5. Dan sebagiannya yang bisa dirumuskan peserta TMU


#Perdamaian / Multikulturalisme / Pluralisme

Dunia damai : tanpa negara, tanpa agama, tak ada surga dan tak adaneraka..?
- Bgaimana konstruksi (worldview) seseorang tentang kehidupan damai..?
- Bagaimana liberalism, sekularisme, multikulturalisme, pluralism sebagai 'komoditas intelektual' yang bermakna aktual..? (baca buku Carool Kersten, 2018)
- Siapa penyeru perdamaian..? Siapa dan bagaimana perdamaian dicapai..?
- Dialog dan 'home visit' sebagai mekanismenmencari damai.

Gerakan purifikasi dan politik/anti politik


Teror, Harapan dan Pasca Kebenaran
  • Terorisme, radikalisme di kalangan pelajar (kasus Rohis yang dihasilkan oleh penelitian CRCS UGM 2016)
  • Akar ketidakadilan, lemahnya negara dan kontestasi ideologi
  • Produksi dan reproduksi ketegangan - ketegangan yang tak tak tertahankan berujung pada peminggiran ide kebenaran. Viral lebih dapat diandalkan sebgai kekuatan peekan ketimbang obyektifitas dan legitimasi scientific.



#Perubahan Iklim dan Urusan - urusan Ekologi yang Tak Serius ditangani

Masa depan manusia, termasuk pelajar digenggaman ekosistem / ekologi
-Persoalan ekologi adalah darurat bagi sebagian besar penduduk bumi
-Orientasi modernitas, kekuasaan kapitalistik, pertumbuhan ekonomi membunuh kesehatan ekologi dunia.


Keterdesakan global (edikit dari buku yang beredar di banyak negara diterjemahkan tahun 1980-an isu lingkungan)


Konteks Indonesia sendiri, dll

TERROR EKOLOGI merupakan situasi yang kompleks, melibatkan teologi, politik dan juga pasar monopolistik-Kapitalistik.


#Jalan Advokasi


VOTE FOR LEADERS WHO WILL FIGHT CLIMATE CHANGE BY
ENDING FOSSIL FUEL SUBSIDIES
INVESTING IN RENEWABLES
LEAVING FOSSIL FUELS IN THE GROUND
SUPPORTING A PRICE ON CARBON




#Gerkan Moral Ekologi Butuh Panduan

CONSUME DIFFERENTLY

WHAT YOU BUY
WHAT YOU EAT
HOW YOU GET YOUR POWER




Agenda aksi
  • Buku Etika hijau pelajar (karakter/etos ekologi) sebagai praktik keimanan dan keislaman. Maka Pendidikan melek ekologis menjadi penting untuk mewujudkan bahwa manusia adalah makhluk ekologis artinya kemampuan memahami prinsip - prinsip dasar ekologi dan hidup sesuai dengan prinsip  prinsip ekologis.
  • Praktik - praktik kegiatan menjaga lingkungan hidup dapat berupa kegiatan - kegiatan yang aktual, kolaboratif, kontekstual.
  • Menyuarakan ke dunia apa yang sudah dilakukan (belajar dari pengalaman environmental Muslim groups di USA).
  • Sekolah ekoliterasi : sekolah politik pelajar hijau : sekolah kader hijau, One World For All (Penggunaan Bahasa juga penting untuk menandai derajat integrase global gerakan pelajarMuh)
  • Membangun jaringan internasional isu-isu lingkungan
  • Dan seterusnya



#Isu Pembangunan Literasi

Pembangunan Literasi Semesta, Jalan Panjang mengurangi persoalan yang tak dapat dihentikan
  • Negara semakin menganggap penting literasi lima tahun terakhir ini, peran CS juga tak dapat diabaikan, terlebih kaum muda. Setidaknya eksistensi FTBM, STP, dll sebagai bukti
  • Literasi sebagai praktik sosial, masih sangat termarjinalkan
  • Kecerdasan kaum milenial, barangkali bukan kecerdasan tetapi kemampuan adaptasi yang wireless atau cyber.
  • Literasi buruk negaranya miskin, dan sebaliknya. Ini dapat dijelaskan analisisnya.
  • Literasi digital, digitasi, IoT.





Pembangunan Literasi Aktual

Perlunya LITERASI BARU Menghadapi Era Revolusi Industri 4.0

Agar lulusan bisa kompetitif, kurikulum perlu orientasi baru, sebab adanya Era Revolusi Industri 4.0, tidak hanya cukup Literasi Lama (membaca, menulis & matematika) sebagai modal dasar untuk berkiprah di masyarakat.

Sudah siapkah kita..? Menyiapkan lulusan lebih kompetitif

Literasi Baru (Aoun, MIT, 2017) : 
  • Literasi Data : Kemampuan untuk membaca, analisis dan menggunakan informasi (Big Data) di dunia digital.
  • Literasi Teknologi : Memahami cara kerja mesin, aplikasi teknologi (coding, Artificial Intelligence, dan Engineering Principles).
  • Literasi Manusia : Humanities, Komunikasi dan Desain.


LITERASI MANUSIA
Agar manusia bisa berfungsi dengan baik di lingkungan manusia : Humanities, Komunikasi dan Desain.
mengembangkan kapasitas kognitif mahasiswa : higher order mental skills, berpikir kritis dan sistemik : amat penting untuk bertahan di era revolusi industri 4.0.
* Keterampilan
  1. Kepemimpinan (Leadership)
  2. Bekerja dalam tim (team work)

* kelincahan dan kematangan budaya (Cultural agility) :
  Mahasiswa dengan berbagai latar belakang mampu bekerja dalam lingkungan yang berbeda (dalam/luar negeri).

* Entrepreneurship (termasuk social entrepreneurship) :
  Harus merupakan kapasitas dasar yang dimiliki oleh semua mahasiswa.


Bagaimana mengajarnya..? (Aoun, 2017)
- Studi tematik berbagai disiplin, hubungan dengan dunia nyata, project based-learning.
- Melalui General Education, Ekstra-kurikuler.
- magang / kerja praktek / co-op program (al. higher order skills, leadership, team work) (northwestern,2014)


Radikalisasi Informasi (Ir 4.0)
  1. Penguasa data dimengerti sebagi pengendali banyak hal dan superior.
  2. Sumber daya paling bernilai di era IoT atau IR 4.0 adalah DATA. siapa yang menguasai informasi/big data ia menguasai dunia.
  3. Pertanyaanya : Bisakah menjalani, High tech sustainable development..? Bagaimana itu..?
  4. Bisnis dan online kapitalisme (e-capitalism, e-neoliberalism, e-money), ini bisa jadi melahirkan kembali 'dekade keserakahan' yang disinggung Stiglitz(2005).

70-90 % pekerjaan manusia beralih ke robot, sejenis kongritisasi darimvirtual intelligence.




Agenda aksi
  • Internet sebagai perpustakaan, bukan sekedar hiburan
  • Dakwah berbasis pengetahuan di era digital (panduan dan praktik)
  • meningkatkan kapasitas literasi 4.0 dikalangan pelajar 
  • menciptakan beragam infrastruktur kreatif untuk melipatgandakan daya ubah pengetahuan : perpu komuitas digital, networking literacy, dll
  • Ada kehidupan yang perlu dikelola yaitu lingkungan hidup, digital bukan segalanya, sehingga perlu yang namanya gerakan ekoliterasi di kalangan pelajar.
  • Kunci : Setia pada tindakan - tindakan kecil sembari menyiapkan tindakan besar bagi kehidupan global.
  • Membangun jaringan internasional isu-isu terkait.


Selamat berdiskusi..

by : David Efendi

Struktur Aplikasi Java



Pada postingan kali ini kita akan mempelajari struktur aplikasi java, di dalam aplikasi java kita akan menggunakan package untuk mengorganisasi class-class dalam package agar rapi dan dipisahpisahkan berdasarkan fungsinya. Import digunakan untuk mengimport class yang berada dalam package yang berbeda. Class-class dalam modul yang sama biasanya diletakkan dalam satu jar agar mudah didistribusikan, class-class dalam jar ini biasa juga disebut sebagai library. Kalau aplikasi memerlukan class dari jar lain, kita harus meletakkan jar tersebut di dalam classpath agar bisa ditemukan oleh JVM.

Semua konsep package, import, jar dan classpath sangat penting untuk mengatur struktur aplikasi Java. Dengan pengaturan yang rapi aplikasi bisa mudah dipelihara dan tidak memerlukan waktu yang lama untuk mempelajari kodenya. Kita akan bahas satu per satu konsep-konsep tersebut di bab berikutnya.

Package

Pakcage dalam java adalah sebuah mekanisme untuk mengorganisasi penamaan class ke dalam modul-modul.  Class yang mempunyai fungsionalitas serupa dan kemiripan cukup tinggi biasanya diletakkan dalam satu package yang sama. Kalau ingin menggunakan class lain yang 
berada dalam package yang berbeda harus diimport terlebih dahulu menggunakan keyword import. Class-class dalam package agar mudah didistribusikan biasanya diletakkan dalam satu buah jar yang pada dasarnya adalah sebuah fle zip saja. 

Paragraf di atas menerangkan hubungan antara package, import dan jar dalam aplikasi java. Selanjutnya kita akan belajar bagaimana membuat package dan mengimport class dari package lain, kemudian membuat fle jar dari class yang sudah dicompile. 

Selain bertujuan untuk mengorganisasi class, package juga digunakan untuk menghindari penamaan class yang bisa bertubrukan dalam aplikasi Java. Kalau kita membuat sebuah class dengan nama yang sangat umum, misalnya class User, kemungkinan besar developer lain akan membuat class dengan nama yang sama, nah bagaimana kalau kita menggunakan library yang didalamnya terdapat nama class yang sama dengan class yang kita buat? class manakah yang akan dipilih oleh Java? masalah penamaan ini dipecahkan dengan menggunakan package. 

Package dimana sebuah class berada akan menjadi bagian dari nama lengkap sebuah class, misalnya class String sebenarnya nama lengkapnya adalah java.lang.String karena class String berada dalam package lang.util. Untuk menghindari penamaan class yang sama, setiap developer disarankan untuk menggunakan package yang unique untuk aplikasi yang digunakan. Misalnya ada 2 buah class dengan nama ClassA, yang satu berada di dalam package a.b.c sehingga nama lengkapnya adalah a.b.c.ClassA sendangkan satu lagi berada di dalam package d.e.f sehingga nama classnya adalah d.e.f.ClassA.

Bagaimana menjamin nama package yang unique? gunakan nama domain website institusi anda, maka anda akan mendapatkan nama package yang unique. Ada sebuah aturan tidak tertulis dari Sun untuk menggunakan nama domain institusi yang dibalik untuk digunakan sebagai package diikuti dengan nama aplikasi. 

Misalnya kita bekerja untuk perusahaan PT coding sejahtera yang mempunyai website codings.com, kemudian kita membuat aplikasi keuangan yang disingkat dengan AKCS (aplikasi keuangan coding sejahtera) maka kita akan membuat package dengan com.codings.akcs. Bagaimana kalau kita membuat aplikasi opensource? gunakan nama domain dimana project tersebut dihosting. Misalnya untuk class-class yang digunakan di buku ini akan menggunakan package com.googlecode.projecttemplate.pos, hal ini karena kode dalam buku ini dihosting di project-template.googlecode.com dan nama aplikasinya adalah pos (point of sales). 

Package pada dasarnya adalah struktur folder untuk meletakkan kode fle java, tetapi tidak bisa sembarangan menyusun struktur folder ini, hal ini dimaksudkan agar kode lebih rapi, teratur dan tidak bercampur campur. 

Untuk membuat package kita akan menggunakan contoh kode class Person di atas, tetapi kita letakkan di dalam package  com.googlecode.projecttemplate.pos.model. Langkah pertama kita buat struktur folder  com\googlecode\projecttemplate\pos\model : 

$ mkdir com 
$ mkdir com/googlecode
$ mkdir com/googlecode/projecttemplate
$ mkdir com/googlecode/projecttemplate/pos
$ mkdir com/googlecode/projecttemplate/pos/model

Setelah itu buat fle Person.java dengan kode di bawah ini 

package com.googlecode.projecttemplate.pos.model; 
public class Person{  
   private Long id;  
   private String nama;  
   public String getNama(){    
   return nama;  
   }  
   public void setNama(String nm){    
   nama = nm;  
   }  
   public Long getId(){    
   return id;  
   }
  public void setId(Long i){    
  id = i;  
  } 
}

Perbedaan class Person di atas dengan class Person di contoh sebelumnya berada pada baris pertama dimana ada keyword package untuk mendeklarasikan di pacakge apa class Person ini berada. Cara mengcompile class yang berada dalam package di atas seperti di bawah ini : 

$ javac com/googlecode/projecttemplate/pos/model/Person.java

Setelah mengenal package, kita akan belajar bagaimana menggunakan import untuk mendeklarasikan class-class yang berada di dalam package yang berbeda.


Import 

Import digunakan untuk menyederhanakan penulisan class. Tanpa menggunakan import kita harus menuliskan nama lengkap class besarta packagenya. Dengan menggunakan import, kita deklarasikan di mana class yang digunakan tersebut berada sehingga selanjutnya tidak perlu lagi menuliskan nama package dari sebuah class.

Ada dua pengecualian di mana import tidak diperlukan, pertama untuk class-class yang berada dalam package yang sama dan kedua adalah class-class yang berada dalam package java.lang. Kita akan membuat interface yaitu PersonDao yang di dalamnya ada class Person, nah kedua class ini akan berada dalam package yang berbeda sehingga di dalam interface PersonDao harus mengimport class Person. 

Pertama kita buat dulu struktur folder untuk PersonDao : 

$ mkdir com/googlecode/projecttemplate/pos/dao 

Setelah itu buat interface PersonDao dengan menyertakan package dan import 

package com.googlecode.projecttemplate.pos.dao; 
import com.googlecode.projecttemplate.pos.model.Person; 
public interface PersonDao{  
  void save(Person p);  
  void delete(Person p);  
  Person getById(Long id); 
}


Kalau menulis kode dengan menggunakan text editor biasa rasanya cukup repot menangani import ini, misalnya ada 20 class yang digunakan dalam satu class, maka harus ada 20 baris import untuk setiap class. Untuk sedikit memudahkan proses import ini bisa menggunakan wildcard (*), jadi kita bisa import sekaligus semua class dalam satu package dengan menggunakan wildcard ini. Contohnya di bawah ini :

import com.googlecode.projecttemplate.pos.model.*;

Import di atas akan menyertakan semua class di dalam package model, tetapi kelemahanya adalah proses pencarian class di dalam package menjadi sedikit lebih lama pada waktu eksekusi program, kalau tidak terpaksa sebaiknya import menggunakan wildard dihindari. Nantinya kalau sudah menggunakan IDE seperti NetBeans proses import ini menjadi sangat gampang karena dibantu oleh feature dari NetBeans tidak perlu lagi menggunakan wildcard. 

Jar

Sampai di sini kita sudah tahu bagaimana class, package dan import bekerja. Nah kalau classnya sudah banyak, kita bisa mengumpulkanya menjadi satu agar mudah untuk didistribusikan. Kumpulan class yang disimpan dalam satu fle disebut jar (Java Archive). Jar sebenarnya hanyalah fle zip semata, kalau punya aplikasi yang bisa membuka fle zip kita juga bisa membuka fle jar. Kalau di windows bisa klik kanan fle jar kemudian open with winzip, isi dari fle jar bisa dilihat dengan gampang. Jar bisa dibuat dengan menggunakan command line tools dari JDK yaitu jar. Di bagian sebelumnya kita sudah membuat dua class yaitu Person dan PersonDao, kedua class ini akan diletakkan di dalam fle jar dengan nama pos.jar, caranya sangat gampang, gunakan tools jar
dari JDK seperti di bawah ini : 

$ jar cvf pos.jar .

Di dalam fle jar terdapat meta data untuk menerangkan isi dari fle jar tersebut yang disebut sebagai manifest. File manifest.mf berisi keterangan tentang jar, misalnya kapan dibuatnya, dibuat oleh siapa, apa nama main classnya dan seterusnya. File manifest.mf harus diletakkan di dalam folder META-INF. Jar yang dibuat oleh tool jar dari JDK akan dibuatkan fle manifest default yang berisi keterangan sederhana. Setelah mengerti konsep dari jar, berikutnya kita belajar tentang classpath. Classpath digunakan untuk mendefnisikan di mana saja java bisa menemukan class yang diperlukan oleh aplikasi.

Classpath 

Classpath adalah cara java untuk menemukan di mana fle jar yang berisi library class yang digunakan dalam aplikasi. Kalau class yang digunakan tidak ditemukan dalam classpath, maka java akan mengeluarkan ClassNotFoundException. Kesalahan ini sering kali terjadi dan kita bisa langsung menyimpulkan bahwa class yang diperlukan tidak berada dalam classpath.

Newbie sering kebingungan dengan error ini, maka saya merasa perlu untuk menerangkan konsep classpath dengan sedikit panjang lebar agar tidak terjadi kebingungan. Newbie yang belajar membuat aplikasi dari awal menggunakan IDE seperti NetBeans sering kebingungan ketika akan menginstall aplikasi, biasanya pertanyaan yang muncul adalah bagaimana membuat versi exe dari aplikasi java yang sudah dibuat. Saya bisa menjamin bahwa membuat exe dari program java yang sudah dibuat adalah tindakan sia sia, pertama karena malah akan menghilangkan feature utama java : run anywhere, ingat exe tidak bisa jalan di OS selain windows. Kedua karena convert java ke exe tidak gampang, perlu tools yang mahal harganya dan tidak ada jaminan bahwa hasil convert ke exe akan bisa jalan mulus seperti aslinya.

Nah kalau tidak diconvert ke dalam exe bagaimana cara membuat launcher agar user tinggal klik dua kali dan aplikasi jalan? Jawabanya adalah dengan membuat fle bat di windows atau fle sh di selain windows. Di dalam fle bat / sh tersebut terdapat command line untuk menjalankan aplikasinya. Untuk membuatnya diperlukan sedikit pengetahuan tentang classpath ini.

Di bagian sebelumnya kita sudah belajar membuat sebuah fle jar yang berisi dua buah class : Person dan PersonDao, nah kita sekarang akan membuat sebuah class lagi yang akan mengimport class Person dan mempunyai main method agar bisa dijalankan. Namakan saja classnya adalah ClasspathExercise, kemudian simpan class ini di folder yang berbeda dengan folder sebelumnya. Misalnya folder sebelumnya ada di c:\sample-code, buat lagi sebuah folder kosong di c:\samplecode-classpath.

import com.googlecode.projecttemplate.pos.model.Person;
public class  ClasspathExercise{
  public void main(String[] args){ 
   Person p = new Person(); 
   p.setName("ini nama person"); 
   System.out.println(p.getName());
  }
}

Compile class di atas menggunakan javac

$ javac  ClasspathExercise.java

kalau class di atas dijalankan seperti di bawah ini tanpa classpath maka akan keluar ClassNotFoundException :

$ java ClasspathExercise
Exception in thread "main" java.lang.NoClassDefFoundError:
com/googlecode/projecttemplate/pos/model/Person
    at ClasspathExercise.main(ClasspathExercise.java:4)
Caused by: java.lang.ClassNotFoundException:
com.googlecode.projecttemplate.pos.model.Person     
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
     ... 1 more


Classpath seperti yang sudah kita bahas di atas, digunakan untuk memberitahu java di mana bisa menemukan class-class yang dibutuhkan. Nah kalau cara menjalankan kodenya diganti dengan seperti di bawah ini :

$ java -cp c:\sample-code\pos.jar;.
    ClasspathExercise ini nama person
$

Perhatikan command line di atas, terdapat argumen -cp yang menandakan bahwa kita akan mendefnisikan daftar classpath. File jar dan folder bisa dimasukkan sebagai daftar classpath, seperti contoh di atas kita mendaftarkan fle jar c:\sample-code\pos.jar dan folder yang sedang aktif,  diwakili dengan tanda titik (.).

Kalau anda bekerja di linux / unix terdapat perbedaan di tanda pemisah antar classpath, kalau windows menggunakan titik koma(;), OS selainya menggunakan titik dua(:) seperti di bawah ini

$ java -cp /Users/ifnu/sample-code/pos.jar:.
   ClasspathExercise ini nama person
$

Kita juga bisa menggunakan relative path supaya tidak terjadi error kalau flenya dipindahpindah ke folder lain :

$ java -cp ../sample-code/pos.jar:.
  ClasspathExercise ini nama person
$

Nah kembali lagi ke masalah fle bat / sh yang sudah kita bahas sebelumnya. Kita bisa meletakkan perintah di atas ke dalam fle ini dan mengeksekusi kedua fle tersebut layaknya executable file.

Setelah java 6 terdapat feature wildcard di classpath, dimana kita bisa menginclude semua fle jar yang ada dalam sebuah folder. Sebelum feature ini ada, kita harus mendaftarkan semua fle jar satu per satu ke dalam classpath. Perintah di atas bisa sedikit diubah menjadi seperti di bawah ini :

Sampai di sini kita sudah belajar hal-hal dasar tentang class, package, import, jar dan classpath. Berikutnya kita akan belajar lebih banyak tentang bahasa java dan OOP.

sampai disini dulu semoga dapat bermanfaat bagi kita semua yak.. Terimakasih..:) 


Diberdayakan oleh Blogger.