Anda di halaman 1dari 24

SETIAWAN HINDARMAWAN/214116375

-materi setelah UTS saja (servlet, class, jsp, storage, datastore)

-ujiannya teori (ttg app engine dan compute engine) & coding

Link materi :

cloud.google.com/datastore/docs/concepts/queries

cloud.google.com/compute

cloud.google.com/compute/docs/quickstart-linux

- kalo nulis code utk servlet :

tulis methodnya aja (doGet, doPost; tapi parameter dr methodnya gaush) importnya ga usah.

- kalo di jsp:

gausah tulis importnya. tulis <% %> sama html, atau <jsp:useBean...

- kalo di bean, tulis semua smpe import2nya

Google compute engine

Google Cloud Platform | Saya rasa sebagian dari sobat komputer yang berkunjung ke blog Utopicomputers sudah banyak
mengenal dan menggunakan beberapa produk yang ditawarkan oleh raksasa internet Google seperti, Google Mail, Google Search,
Youtube, Android, Blogger, Google Map dan lain - lain. akan tetapi taukah sobat mengenai salah satu dari produk Google yang
bernama Google Cloud Platform. Pada kesempatan kali ini saya akan mengulas lebih dalam mengenai produk layanan dari Google
yang satu ini.
Google Cloud Platform merupakan sebuah produk layanan Cloud Computing
dari Google yang terdiri dari 4 jenis layanan yang kesemuanya bertujuan
untuk membuat sebuah project berbasis Cloud Computing / Komputasi
Berbasis Internet agar bisa dimanfaatkan dalam skala global. adapun 4 jenis
layanan tersebut adalah Google AppEngine, Google BigQuery, Google
Compute Engine dan Google Cloud Storage.

Kelebihan Menggunakan Layanan Google Cloud Platform

1. Keamanan Data : Menggunakan layanan Google cloud Platform memungkinkan kita untuk memiliki keamanan data yang sangat
terjamin, hal ini merupakan faktor penting untuk membangun sebuah layanan berbasis internet.
2. Fleksibel : Dimanapun kita berada kita bisa mengakses data yang kita simpan di Google Cloud dengan mudah dan yang perlu kita
sediakan hanya akses internet. Sobat juga bisa menggunakan RESTful API agar aplikasi yang sobat buat bisa di intregrasikan dengan
smartphone berbasis Android ataupun iOS Apple.
3. Data Terpusat : Penyimpanan yang terpusat sangat diperlukan untuk membangun sebuah layanan dengan skala besar, terutama
apabila pengguna dari layanan tersebut sangat banyak.
4. Menghemat Biaya : Apabila kita memikirkan investasi jangka panjang, layanan Google Cloud bisa menekan biaya pengadaan
infrastuktur system yang kita perlukan untuk membangun sebuah aplikasi untuk bisnis kita.

Jenis Layanan Google Cloud Platform


Google AppEngine
Google AppEngine merupakan salah satu layanan google yang memungkinkan sobat membuat dan menjalankan aplikasi berbasis
web. Layanan ini mempunyai versi gratis dan berbayar yang bisa sobat gunakan, Untuk versi gratis disediakan space penyimpanan
500 MB, Kapasitas Processor dan Bandwith yang ditawarkan Google AppEngine mampu untuk 5 juta page-view setiap bulannya.
Pada saat awal di luncurkan Google AppEngine hanya mendukung bahasa pemrograman Python, kemudian dikembangkan lagi
hingga mendukung teknologi Java, PHP, Go, Ruby dan dilengkapi dengan Farmework Google .Website - website skala besar
seperti www.khanacademy.orgdibangung dengan produk layanan Google yang satu ini, dan apabila sobat ingin belajar membuat
sebuah aplikasi dengan menggunakan Google AppEngine, sobat bisa klik disini.
Google BigQuery
Layanan Google yang satu ini sangat cocok digunakan sebagai tools untuk menganalisis data ukuran besar hingga ukutan mencapai
Terabyte atau Petabite dengan membutuhkan waktu hanya hitungan detik. Layanan ini sangat cocok digunakan untuk aplikasi
bisnis skala besar. Google BigQuery banyak digunakan oleh perusahaan - perusahaan besar untuk membantu menganalisis data
transaksi bisnis mereka. untuk belajar menggunakan Google BigQuery sobat bisa klik link ini
Google Compute Engine
Google Compute Engine merupakan sebuah jenis layanan Cloud yang ditawarkan oleh Google untuk membantu kita membangun
sebuah cloud server, sobat bisa mengontrol penuh mesin linux yang sobat bangun diatas server Google. Layanan ini mampu
menampung aplikasi web sobat yang dibangun dengan menggunakan bahasa pemrograman Ruby atau PHP. Untuk mempelajari
lebih jauh mengenai Google Compute Engine, sobat bisa mengunjungi link ini
Google Cloud Storage
Google Cloud Storage merupakan salah satu produk layanan dari Google yang dikhususkan untuk para developer sebagai media
untuk penyimpanan data dengan ukuran yang sangat besar. Layanan ini memungkinkan sobat untuk membuat sebuah layanan
sharing file, sharing video atau sharing foto dengan sangat mudah tanpa memikirkan bagaimana cara membangun infrastuktur
server. apabila sobat ingin mencoba layanan Google Cloud Storage sobat bisa mengklik link ini.
Bagaimana tertarik memulai menggunakan cloud computing untuk keperluan bisnis atau pembangunan project aplikasi Web,
Dekstop ataupun Mobile, sekarang sobat bisa mencoba menggunakan beberapa layanan Google Cloud Platform untuk keperluan
sobat komputer sekalian terlebih apabila sobat akan memulai mencoba trend pemrograman baru yaitu Cloud Programming.

Arsitektur Google Compute Engine


Setelah mengenal keistimewaan Google Compute Engine pada tulisan sebelumnya, kali ini kita akan mengenal arsitektur Google
Compute Engine. Berikut ini gambaran umum komponen sistem pada Google Compute Engine:

Komponen Sistem Google Compute Engine

API
API (Application Programming Interface) adalah sebagai model untuk
berinteraksi dengan sistem menggunakan JSON di atas koneksi HTTP.
Penggunaannya mirip dengan API produk Google lainnya. Untuk
mengakses API Google Compute Engine, autentifikasi menggunakan
Oauth 2.0.

Untuk mengakses Google Compute Engine dapat melalui beberapa pilihan


yang tersedia:

1. CLI (Command Lie Interface): gcutil untuk penggunaan command


line.
2. UI (User Interface): Antar-muka/interface web yang dibangun di Google App Engine.
3. Partners dan ecosystem: Cloud Platform Management, seperti RightScale dan PuppetLabs.

Instances
Instance adalah berupa mesin virtual dengan sistem operasi linux (Ubuntu, CentOS) dengan hak akses root dan beberapa utilitas
yang sudah diinstall serta menggunakan prosesor modern (Intel Sandy Bridge). CPU virtual terdiri dari 1, 2, 4, dan 8 core dengan
3.75GB RAM dan ~420GB ephermeral disk untuk masing-masing CPU virtual. Spesifikasi mesin yang lebih rendah akan segera
hadir.
Kernel

Proses mesin virtual dan proses non mesin virtual berjalan


berdampingan. Kernel mesin virtual bekerja sangat mirip
dengan kernel RedHat.

Networking

Private Virtual Networke


Jaringan setiap proyek diisolasi, menggunakan IPv4 privat (RFC 1918). Saat ini belum mendukung IPv6.

Internet Access
Setiap mesin virtual bisa mendapatkan alamat IP eksternal (1 – 1 NAT). Tidak terikat zona/regional. Sistem firewall sudah
tersedia. Lalu lintas jaringan terbatas, hanya UDP, TCP, dan ICMP (Outgoing SMTP diblokir).

Storage

Persistent Disk
Kinerja cepat dan konsisten. Tersedia melalui API. Baca/tulis dengan satu instance. Baca dengan banyak instances. Seluruh isi
disk dienkripsi.

Local/Ephermeral Disk
Digunakan untuk proses booting seluruh instances. Keberadaannya mengikuti instance (siklus hidup mesin virtual). Terdapat
pada mesin fisik yang sama. Seluruh isi disk juga dienkripsi.

Google Cloud Storage


Pengaksesan melalui Global API. Akses tidak berselisihan dengan akun IaaS cloud service. Baik untuk input dan output data.

Untuk definisi dan keterangan lebih rinci, dapat dilihat ke dokumentasi Google Compute Engine.

Sekian penjelasan tentang arsitektur layanan infrastruktur Cloud milik Google ini. Implementasi produk IaaS Google akan
dibahas pada tulisan berikutnya.

Apa itu Google Cloud?


Google cloud merupakan sebuah produk layanan Cloud Computing dari Google yang terdiri dari 4 jenis layanan yang
kesemuanya bertujuan untuk membuat sebuah project berbasis Cloud Computing / Komputasi Berbasis Internet agar bisa
dimanfaatkan dalam skala global.

4 jenis layanan Google cloud antara lain :


(1). Google AppEngine
(2). Google BigQuery
(3). Google Compute Engine
(4). Google Cloud Storage

Apa itu G Suite?


G suite merupakan paket layanan berbasis awan yang dapat menyediakan cara yang sepenuhnya baru untuk bekerja sama
secara online bagi perusahaan atau sekolah, tidak hanya menggunakan email dan chat, namun dari konferensi video, media
sosial, kolaborasi dokumen dalam waktu nyata, dan masih banyak hal lain lagi.

Kelebihan Dan Kekurangan Google cloud(G suite)


Kelebihan Google cloud(G suite)
1. Keamanan Data : Menggunakan Google Cloud memungkinkan kita untuk memiliki keamanan data yang sangat terjamin, hal
itu merupakan faktor penting dalam melakukan pembangunan sebuah layanan berbasis Internet.
2. Fleksibel : Dimanapun kita berada kita bisa mengakses data yang kita simpan di google cloud dengan mudah yang perlu kita
sediakan yaitu koneksi internet.
3. Data Terpusat : Penyimpanan yang terpusat sangat di perlukan untuk membangun sebuah layanan dengan skala besar,
terutama apabila pengguna dari layanan tersebut sangat banyak.
4. Menghemat Biaya : Apabila kita memikirkan investasi jangka panjang, layanan google cloud bisa menekan biaya infrastuktur
system yang dapat kita perluka untuk membangun sebuah aplikasi atau bisnis kita.

Kekurangan Google cloud (G suite)


koneksi internet. Jika tidak ada koneksi internet jangan berharap untuk bisa menggunakan komputasi awan. Hal ini yang
menjadi penyebab atau hambatan perusahaan yang menggunakan teknologi komputasi awan tidak bisa eksis di daerah yang
belum terintegrasi internet. Indonesia menjadi salah satu negara yang semua daerahnya belum terjangkau koneksi internet.

Apa itu Google App Engine?

Google App Engine merupakan salah satu layanan PaaS (Platfrom as a Services) yang dipersembahkan mbah Google yang dapat
memungkinkan Anda menjalankan aplikasi web pada infrastruktur Google. Dengan Aplikasi App Engin and mudah untuk
membangun, mudah untuk mempertahankan, dan mudah untuk skala sebagai lalu lintas dan kebutuhan penyimpanan data
berkembang. Dengan App Engine, tidak ada server untuk mempertahankan: Anda hanya meng-upload aplikasi Anda, kemudian
siap untuk melayani pengguna Anda.

Anda dapat melayani aplikasi Anda dari nama domain Anda sendiri (seperti https://www.abasdjumadi.web.id/) menggunakan
Google Apps. Atau, Anda dapat melayani aplikasi Anda menggunakan nama domain gratis di appspot.com. Anda dapat berbagi
aplikasi Anda dengan dunia, atau membatasi akses ke anggota organisasi Anda.

Google App Engine mendukung aplikasi yang ditulis dalam beberapa bahasa pemrograman. Dengan App Engine lingkungan
runtime Java, Anda dapat membangun aplikasi menggunakan teknologi Java standar, termasuk JVM, servlet Java, dan bahasa
pemrograman Java-atau bahasa lainnya menggunakan interpreter JVM-based atau compiler, seperti JavaScript atau Ruby. App
Engine juga memiliki dua berdedikasi Python lingkungan runtime, yang masing-masing mencakup interpreter Python cepat dan
perpustakaan Python standar. Akhirnya, App Engine menyediakan lingkungan runtime Go yang berjalan native dikompilasi Go
kode. Lingkungan runtime ini dibangun untuk memastikan bahwa aplikasi Anda berjalan dengan cepat, aman, dan tanpa
gangguan dari aplikasi lain pada sistem.

Dengan App Engine, Anda hanya membayar untuk apa yang Anda gunakan. Tidak ada set-up biaya dan tidak ada biaya berulang.
Sumber daya aplikasi Anda menggunakan, seperti penyimpanan dan bandwidth, yang diukur dengan gigabyte, dan ditagih
dengan harga yang bersaing. Anda mengontrol jumlah maksimum sumber daya aplikasi yang dapat anda konsumsi, sehingga
selalu tetap dalam anggaran Anda.

App Engine tidak ada biaya untuk memulai. Semua aplikasi dapat menggunakan hingga 1 GB penyimpanan dan CPU yang cukup
dan bandwidth untuk mendukung sebuah aplikasi yang efisien melayani tampilan halaman sekitar 5 juta per bulan, benar-benar
gratis. Bila Anda mengaktifkan penagihan untuk aplikasi Anda, batas gratis dibangkitkan, dan Anda hanya membayar untuk
sumber daya yang Anda gunakan di atas tingkat bebas.

Lingkungan Application

Google App Engine memudahkan untuk membangun sebuah aplikasi yang berjalan, bahkan di bawah beban berat dan dengan
data dalam jumlah besar. App Engine mencakup beberapa fitur berikut:

 Melayani web dinamis, dengan dukungan penuh untuk teknologi web umum
 Gigih penyimpanan dengan pertanyaan, menyortir dan transaksi
 Otomatis scaling dan load balancing
 API untuk otentikasi pengguna dan mengirim email menggunakan Akun Google
 Lingkungan pengembangan fitur penuh lokal yang mensimulasikan Google App Engine di komputer Anda
 Menangani antrian Tugas untuk melakukan pekerjaan di luar lingkup permintaan web
 Tugas dijadwalkan untuk memicu peristiwa pada waktu tertentu dan secara berkala
Aplikasi Anda dapat berjalan di salah satu dari tiga lingkungan runtime: lingkungan Go, lingkungan Java, dan lingkungan Python
yang memberikan Anda pilihan Python 2.5 atau Python 2.7. Lingkungan masing-masing menyediakan protokol standar dan
teknologi umum untuk pengembangan aplikasi web.

Sandbox
Sandbox adalah Aplikasi berjalan di lingkungan yang aman yang memberikan akses terbatas ke sistem operasi yang
mendasarinya. Keterbatasan ini memungkinkan App Engine untuk mendistribusikan permintaan web untuk aplikasi di beberapa
server, mulai dan berhenti server untuk yang memenuhi permintaan lalu lintas. Sandbox mengisolasi aplikasi Anda sendiri di
lingkungan yang aman, handal yang independen dari sistem, perangkat keras operasi dan lokasi fisik dari server web.

Contoh keterbatasan lingkungan sandbox aman meliputi:

 Sebuah aplikasi hanya dapat mengakses komputer lain di Internet melalui URL yang diberikan mengambil dan email layanan.
Komputer lainnya hanya dapat terhubung ke aplikasi dengan membuat HTTP (atau HTTPS) permintaan pada port standar.
 Aplikasi tidak dapat menulis ke sistem file dalam salah satu lingkungan runtime. Sebuah aplikasi dapat membaca file, tetapi file
upload hanya dengan kode aplikasi. Aplikasi ini harus menggunakan datastore App Engine, memcache atau layanan lainnya
untuk semua data yang bertahan antara permintaan. Lingkungan 2.7 Python memungkinkan bytecode untuk dibaca, ditulis, dan
dimodifikasi.
 Kode aplikasi hanya berjalan dalam menanggapi permintaan web, tugas yang antri, atau tugas yang dijadwalkan, dan harus
kembali data respon dalam waktu 60 detik dalam hal apapun. Seorang penangan permintaan tidak bisa menelurkan sebuah
proses sub-atau mengeksekusi kode setelah respon telah dikirim.

Lingkungan Go Runtime
Lingkungan runtime Go App Engine menyediakan cara yang nyaman untuk menerapkan dan menyebarkan aplikasi web yang
ditulis dalam Bahasa Pemrograman Go.
Lingkungan runtime Go Go menggunakan rilis r60.3. SDK meliputi compiler Go dan perpustakaan standar, sehingga tidak
memiliki dependensi tambahan. Seperti halnya dengan lingkungan Java dan Python, tidak semua fungsi perpustakaan standar
yang tersedia di dalam Sandbox. Misalnya, mencoba untuk membuka socket atau menulis ke file akan kembali kesalahan
os.EINVAL.
SDK termasuk layanan membangun otomatis untuk mengkompilasi aplikasi Anda, sehingga Anda tidak akan pernah perlu
memanggil compiler sendiri. Dan-seperti dengan Python SDK-aplikasi, Anda akan secara otomatis dibangunkan (auto reload)
kembali setiap kali Anda mengubah sumber. Hal ini membuat Anda produktif dengan membuat siklus edit-kompilasi-run.
Lingkungan Go Go menyediakan idiomatic API untuk sebagian besar layanan App Engine.
Anda dapat meng-upload lainnya pihak ketiga perpustakaan dengan aplikasi Anda, asalkan mereka implmented di Go murni.

Java Runtime Environment

Anda dapat mengembangkan aplikasi Anda untuk lingkungan runtime Java menggunakan alat umum pengembangan Java web
dan standar API. App berinteraksi dengan lingkungan dengan menggunakan Java Servlet standar, dan dapat menggunakan
teknologi aplikasi web umum seperti JavaServer Pages (JSP).

Lingkungan runtime Java menggunakan Java 6. The App Engine Java SDK mendukung aplikasi berkembang baik menggunakan
Java 5 atau 6.

Lingkungan mencakup Java SE Runtime Environment (JRE) 6 platform dan perpustakaan. Pembatasan dari lingkungan sandbox
diimplementasikan dalam JVM. Sebuah aplikasi dapat menggunakan JVM bytecode atau fitur perpustakaan, asalkan tidak
melebihi pembatasan sandbox. Misalnya, bytecode yang mencoba untuk membuka soket atau menulis ke file akan melempar
pengecualian runtime.

App Anda mengakses layanan Mesin Web menggunakan Java standar API. Untuk datastore App Engine, SDK Java termasuk
implementasi dari data Java Objects (JDO) dan (JPA) Java Persistence API interface. App Anda dapat menggunakan API JavaMail
untuk mengirim pesan email dengan layanan App Engine Mail. The java.net HTTP akses API URL mengambil layanan App Engine.
App Engine juga termasuk tingkat rendah API untuk layanan untuk mengimplementasikan adapter tambahan, atau
menggunakan langsung dari aplikasi.

Biasanya, pengembang Java menggunakan bahasa pemrograman Java dan API untuk mengimplementasikan aplikasi web untuk
JVM. Dengan menggunakan JVM-kompatibel kompiler atau interpreter, Anda juga dapat menggunakan bahasa lain untuk
mengembangkan aplikasi web, seperti JavaScript, Ruby, atau Scala.

Runtime Environment Python


Dengan App Engine runtime environment Python, Anda dapat menerapkan aplikasi Anda menggunakan bahasa pemrograman
Python, dan menjalankannya pada seorang penerjemah Python dioptimalkan. App Engine termasuk API kaya, dan tool untuk
pengembangan aplikasi web Python, termasuk fitur pemodelan data kaya API, yang mudah-menggunakan kerangka kerja
aplikasi web, dan alat untuk mengelola dan mengakses data aplikasi Anda. Anda juga dapat mengambil keuntungan dari
berbagai perpustakaan matang dan kerangka kerja untuk pengembangan aplikasi web Python, seperti Django.

Lingkungan runtime Python menggunakan Python versi 2.5.2 secara default. Anda juga dapat memilih runtime 2.7.2 Python.

Lingkungan Python termasuk perpustakaan standar Python. Tentu saja, tidak semua fitur perpustakaan dapat dijalankan dalam
lingkungan sandbox. Misalnya, panggilan ke metode yang mencoba untuk membuka socket atau menulis ke file akan
memunculkan eksepsi. Untuk kenyamanan, beberapa modul di perpustakaan standar yang inti fitur tidak didukung oleh
lingkungan runtime telah dinonaktifkan, dan kode yang mereka impor akan meningkatkan kesalahan.

Kode aplikasi yang ditulis untuk lingkungan Python harus ditulis secara eksklusif dengan Python. Ekstensi yang ditulis dalam
bahasa C tidak didukung.

Lingkungan Python menyediakan kaya Python API untuk datastore, Account Google, URL fetch, dan layanan email. App Engine
juga menyediakan kerangka kerja Python web sederhana aplikasi bernama webapp untuk membuatnya mudah untuk memulai
membangun aplikasi.

Anda dapat meng-upload lainnya melalui pihak ketiga perpustakaan dengan aplikasi Anda, selama mereka diimplementasikan
dalam Python murni dan tidak memerlukan modul perpustakaan yang tidak didukung standar.

Menyimpan Data Anda

Lingkungan App Engine menyediakan berbagai pilihan untuk menyimpan data Anda:

 App Engine Datastore menyediakan datastore objek NoSQL schemaless, dengan mesin query dan transaksi atom.
 Google Cloud SQL menyediakan layanan SQL database relasional untuk aplikasi App Engine, berdasarkan RDBMS MySQL familiar.
 Google Cloud Storage menyediakan layanan penyimpanan untuk objek dan file hingga dalam ukuran terabyte, dapat diakses dari
aplikasi Python dan Java.

Datastore

App Engine menyediakan NoSQL yang didistribusikan untuk layanan penyimpanan data yang dilengkapi dengan mesin query dan
transaksi. Sama seperti web server yang didistribusikan tumbuh dengan lalu lintas Anda, datastore didistribusikan tumbuh
dengan data Anda. Anda memiliki pilihan antara dua pilihan penyimpanan data dibedakan oleh ketersediaan dan jaminan
konsistensi yang berbeda.

Datastore App Engine tidak seperti database relasional tradisional. Data benda, atau “badan,” memiliki jenis dan set properti.
Pertanyaan dapat mengambil entitas dari jenis tertentu disaring dan diurutkan berdasarkan nilai-nilai dari properti. Nilai
properti dapat menjadi salah satu jenis nilai properti yang didukung.

Entitas Datastore adalah “schemaless.” Struktur entitas data disediakan oleh dan ditegakkan oleh kode aplikasi Anda. Java JDO /
JPA interface dan antarmuka datastore Python termasuk fitur untuk menerapkan dan menegakkan struktur dalam aplikasi Anda.
App Anda juga dapat mengakses datastore langsung menerapkan sebanyak atau sesedikit struktur yang dibutuhkan.

Datastore ini menyediakan transaksi ACID menggunakan kontrol konkurensi optimis. Update entitas terjadi dalam transaksi yang
dicoba tetap jumlah kali jika proses lain mencoba untuk memperbarui entitas yang sama secara bersamaan. Aplikasi Anda dapat
mengeksekusi operasi beberapa datastore dalam satu transaksi yang baik semua berhasil atau gagal semua, memastikan
integritas data Anda.

Datastore menerapkan transaksi di seluruh jaringan terdistribusi dengan menggunakan “kelompok entitas.” Sebuah transaksi
memanipulasi entitas dalam suatu kelompok tunggal. Entitas dari kelompok yang sama disimpan bersama-sama untuk
pelaksanaan efisien transaksi. Aplikasi Anda dapat menetapkan entitas untuk kelompok ketika entitas diciptakan.

Google Account

App Engine mendukung mengintegrasikan sebuah aplikasi dengan Account Google untuk otentikasi pengguna. Aplikasi Anda
dapat memungkinkan pengguna untuk sign in dengan akun Google, dan mengakses alamat email dan nama dapat ditampilkan
terkait dengan account. Menggunakan Akun Google memungkinkan pengguna mulai menggunakan aplikasi Anda lebih cepat,
karena pengguna tidak perlu membuat akun baru. Hal ini juga menghemat upaya menerapkan sistem akun pengguna hanya
untuk aplikasi Anda.

Jika aplikasi Anda berjalan di bawah Google Apps, dapat menggunakan fitur yang sama dengan anggota organisasi Anda dan
akun Google Apps.
Pengguna API juga dapat memberitahu aplikasi apakah pengguna saat ini adalah administrator terdaftar untuk aplikasi. Hal ini
mempermudah untuk menerapkan admin-status area situs Anda.

Layanan App Engine

App Engine menyediakan berbagai layanan yang memungkinkan Anda untuk melakukan operasi umum ketika mengelola aplikasi
Anda. API berikut disediakan untuk mengakses layanan ini:

 URL Fetch
Aplikasi dapat mengakses sumber daya di Internet, seperti layanan web atau data lain, mengambil layanan dan menggunakan
URL App Engine . URL fetch sumber layanan web mengambil menggunakan infrastruktur kecepatan tinggi yang sama seperti
Google yang mengambil halaman web untuk banyak produk Google lainnya.
 Surat
Aplikasi dapat mengirim pesan email dengan menggunakan layanan mail App Engine. Layanan mail menggunakan infrastruktur
Google untuk mengirim pesan email.
 Memcache
Layanan Memcache menyediakan aplikasi Anda dengan kinerja tinggi di memori kunci-nilai cache yang dapat diakses oleh
beberapa contoh dari aplikasi Anda. Memcache berguna untuk data yang tidak memerlukan ketekunan dan fitur transaksional
dari datastore, seperti data sementara atau data yang disalin dari datastore ke cache untuk akses kecepatan tinggi.
 Manipulasi Gambar
Layanan Gambar memungkinkan aplikasi Anda memanipulasi gambar. Dengan API ini, Anda dapat mengubah ukuran, crop,
rotate dan flip gambar dalam format JPEG dan format PNG.

Mengenal Google App Engine


Dalam dunia cloud computing, ada tiga istilah penting yang harus dipahami sebelum mulai mempelajari teknologi ini. Ketiga
istilah tersebut adalah Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS).

Iaas secara sederhana dapat dimengerti sebagai peralatan penunjang yang menyediakan layanan cloud computing pada sebuah
jaringan, seperti server-server, virtual machine (VM), dan network equipment. PaaS adalah tentang kebutuhan hardware dan
sistem operasi dari cloud computing tersebut, berbeda dengan IaaS yang memiliki keleluasaan pilihan lebih banyak. Yang
terakhir adalah SaaS, yang dapat dipahami sebagai software yang berjalan pada sistem cloud, seperti web-hosted application,
email dan model-model aplikasi bisnis lainnya. Sebetulnya, ketiga konsep diatas tidak bersifat paten, artinya ada banyak konsep
lain yang dapat digolongkan kedalam layanan cloud computing, seperti Storage as a Service (StaaS), Monitoring as a Service
(MaaS), Communicator as a Service (UaaS) dan lain sebagainya. Beberapa pihak kemudian menyebut layanan dalam cloud itu
sebagai XaaS, dimana “X” dapat diganti dengan bentuk layanan yang diimplentasikan.

Google APP Engine (GAE) adalah salah satu contoh PaaS. GAE menyediakan sekumpulan API (Application Programming
Interface) lengkap dalam bentuk SDK yang bisa didownload secara bebas. Selain itu, produk GAE sendiri juga bebas untuk
digunakan alias gratis. Tentu ada batasan-batasan sumber daya (resources) yang diberikan pada versi gratisnya, tetapi dalam
beberapa hal tertentu resources yang tersedia ini sudah mencukupi. Jika anda membutuhkan tambahan sumber daya, ada biaya
yang akan ditagihkan. Jenis sumber daya yang dibatasi didalam GAE adalah pada storage, bandwidth dan waktu operasional dari
aplikasi tersebut (dihitung per jam). Saat ini, untuk menggunakan GAE, anda dapat menggunakan dua macam bahasa
pemrograman, yaitu JAVA dan PHYTON. Teknologi Java yang umum dipakai di GAE adalah Servlet dan JSP. Di artikel berikutnya,
fokus pembahasan ada pada GAE yang berbasis Java.
Keunggulan utama dari GAE antara lain adalah sebagai berikut:

 Persistent storage, yang dapat diakses dengan query.


Persistent storage dalam GAE ada tiga macam: App Engine
DataStorage (schemaless), Google Cloud SQL dan Google Cloud
Storage.
 Dynamic web Serving.
 Dapat secara otomatis skalabilitasnya dan load balancing.
 Untuk para developer dalam mensimulasikan GAE pada
local machine mereka sehingga tidak harus selalu online.
 Memiliki task queue yang memungkinkan aktifitas kerja
diluar scope dari sebuah web request.
Selain itu, setiap aplikasi yang berjalan didalam GAE akan di-
sandboxing, dimana lingkungannya terkunci untuk menghindari
gangguan pada aplikasi GAE lainnya. Batasan ini juga memungkinan
App Engine untuk mendistribusikan web request dari sebuah
aplikasi ke server-server yang lain. Sistem sandbox mengunci
aplikasi kita pada dalam sebuah lingkungannya sendiri dan tidak terikat pada hardware, sistem operasi dan lokasi dari server
dimana aplikasi tersebut akan dijalankan.

COMPUTE ENGINE
Scalable, High-Performance Virtual Machines
High-Performance, Scalable VMs
Google Compute Engine delivers virtual machines running in Google's innovative data centers and worldwide fiber network.
Compute Engine's tooling and workflow support enable scaling from single instances to global, load-balanced cloud computing.
Compute Engine's VMs boot quickly, come with persistent disk storage, and deliver consistent performance. Our virtual servers
are available in many configurations including predefined sizes or the option to create Custom Machine Types optimized for
your specific needs. Flexible pricing and automatic sustained use discounts make Compute Engine the leader in
price/performance.
Industry Leading Price & Performance
Compute Engine VMs boot quickly and are consistently high performance. Compute Engine also offers industry-leading local
SSD performance. Compare throughput on equivalent IaaS offerings and see the difference our virtual servers can make for your
workloads.
Low Cost, Automatic Discounts
Google bills in second-level increments, so you only pay for the compute time you use. With sustained use discounts, we
automatically give you discounted prices for long-running workloads with no up-front commitment required.
USAGE / PRICE
Fast & Efficient Networking
Create large compute clusters that benefit from strong and consistent cross-machine bandwidth. Connect to machines in other
data centers and to other Google services using Google's private global fiber network. Create an instance, check the network
configs, run some tests.
Environmentally Friendly Global Network
Our infrastructure is entirely carbon-neutral. Our global network of data centers consume 50% less energy than the typical
datacenter and in 2017, we will purchase 100% renewable energy to match consumption for our global operations. We are
growing our global datacenter footprint so your applications can run closer to your customers and distribute geographically for
resiliency.
Flexibility for Every Workload
Resize your clusters, create machine images, virtualize your network, use Preemptible VMs for batch workloads and create
Custom Machine Types to optimize for your specific needs. Our pricing model won't lock you into obsolete machine types with
upfront agreements.
1. // CREATE INSTANCE WITH 4 vCPUs and 5 GB MEMORY
2. gcloud compute instances create my-vm --custom-cpu 4 --custom-memory 5
3.
4. // ENABLE PREEMPTIBLE OPTION
5. gcloud compute instances create my-vm --zone us-central1-b --preemptible
COMPUTE ENGINE FEATURES
Scalable, High-Performance Virtual Machines
Predefined Machine Types
Compute Engine offers predefined virtual machine configurations for every need from micro to
instances with 96 vCPUs or 624GB of memory, in standard, high memory, and high CPU
configurations.
Custom Machine Types
Create virtual machines with the shape (i.e. vCPU and memory) that is right for your
workloads. By tailoring a Custom Machine Type to your specific needs you can realize
significant savings.
Persistent Disks
Network storage, up to 64 TB in size, can be attached to VMs as persistent disks. You can
create persistent disks in HDD or SSD formats. If a VM instance is terminated, its persistent disk
retains data and can be attached to another instance. You can also take snapshots of your
persistent disk and create new persistent disks from that snapshot.
Local SSD
Compute Engine offers always-encrypted local solid-state drive (SSD) block storage. Unlike
standard persistent disks, local SSDs are physically attached to the server hosting the virtual
machine instance offering very high input/output operations per second (IOPS) and very low
latency compared to persistent disks. Local SSD sizes up to 3 TB are available for any VM with
at least 1 core.
Transparent Maintenance
Our innovative datacenters and Live Migration technology enable proactive infrastructure
maintenance, improving reliability and security. Your live VMs are automatically moved to
nearby hosts, even if your VMs are under extreme load, while underlying host machines
undergo maintenance. You won't have to reboot your VMs due to host software updates or
even some classes of detectable hardware failure.
Global Load Balancing
Global load-balancing technology helps you distribute incoming requests across pools of
instances across multiple regions, so you can achieve maximum performance, throughput and
availability at low cost.
Linux & Windows Support
Run your choice of OS, including Debian, CentOS, CoreOS, SUSE, Ubuntu, Red Hat, FreeBSD, or Windows Server 2008
R2, 2012 R2, and 2016. You can also use a shared image from the Cloud Platform community, or bring your own.
Batch Processing
Cost effectively run large compute and batch jobs using Preemptible VMs. Fixed pricing and no contracts or
reservations make it easy: simply check a box when you create the VM and turn them off when the work is done.
Compliance & Security
All data written to persistent disk in Compute Engine is encrypted on the fly and then transmitted and stored in
encrypted form. Google Compute Engine has completed ISO 27001, SSAE-16, SOC 1, SOC 2, and SOC 3 certifications,
demonstrating our commitment to information security.
Per-Second Billing
Google bills in second-level increments. You pay only for the compute time that you use.
Automatic Discounts
With Sustained Use Discounts, we automatically give you discounted prices for long-running workloads with no sign-
up fees or up-front commitment.
Commitment savings
With Committed Use Discounts you can save up to 57% with no upfront costs or instance-type lockin.
Containers
Run, manage and orchestrate Docker containers on Compute Engine VMs with Google Kubernetes Engine.
“ Since no existing cloud rendering solution could address our needs at that scale, we decided to develop our own software atop
Google Cloud Platform. Google's efficiency, availability of resources, and per-second billing formed the back-end of a product we
call Conductor. ” - Kevin BaillieAtomic Fiction

Command Git

git init

git add .

git commit -m "Commit Tampilan"

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

git remote remove myanimelist

git remote add myanimelist https://bitbucket.org/matatias/1711-myanimelist/

git clone https://setiawansun@bitbucket.org/matatias/1711-myanimelist.git

git push --set-upstream myanimelist master

git push myanimelist

https://bitbucket.org/matatias/1711-myanimelist/branches/?status=active

https://bitbucket.org/dashboard/overview

mg dpan backend di database noSQL datastore

bisa insert,update,delete

dan di deploy

git remote add myanimelist2 https://bitbucket.org/matatias/1711-myanimelist/

git clone https://matatias@bitbucket.org/matatias/1711-myanimelist.git

Memulai Google App Engine


Pada beberapa artikel di website ini telah diberikan gambaran yang cukup mengenai apa itu Google App Engine dan apa saja hal-
hal yang perlu kita ketahui dan kita perhatikan. Jika anda belum membacanya, maka ada baiknya kedua bagian sebelum ini
disimak terlebih dahulu. Cloud Computing berbasis GAE (Google App Engine) memang sebuah teknologi baru yang menarik
untuk dipelajari, tetapi ada baiknya anda mengetahui apa dan bagaimana mekanisme kerja dari sistem ini, supaya anda tidak
terjebak ada eurofia semata.

Google App Engine merupakan sebuah Paas (Platform as a Service) yang menawarkan layanan cloud computing secara gratis.
Gratis disini tidak berarti benar-benar gratis, ada batasan-batasan tertentu yang ketika anda lampaui akan membuat layanan ini
menjadi sebuah layanan berbayar.

Bagi developer, Google telah menyediakan sebuah SDK (Software Development Kit) yang dapat didownload secara gratis. SDK ini
akan memberikan sebuah lingkungan yang mensimulasikan GAE pada komputer anda, seperti datastore, GAE API, email dan
google account.
Kebutuhan Perangkat Keras dan Perangkat Lunak

Untuk menjalankan SDK ini, tidak dibutuhkan persyaratan hardware khusus. Tidak disebutkan secara spesifik bagaimana
kebutuhan hardwarenya, tetapi dari pengalaman penulis, laptop dengan prosesor Intel i3, memory 2GB dan HDD sekitar 5GB
sudah cukup untuk membentuk lingkungan pengembangan GAE ini. Khusus untuk kebutuhan perangkat lunaknya, ada beberapa
software yang harus anda install agar dapat memulai membuat aplikasi berbasis Google App Engine.

GAE memberikan beberapa pilihan bagi developer untuk mengimplementasikan aplikasi cloud mereka, yaitu berbasis PHYTON,
JAVA atau GO. Bahasa GO adalah bahasa pemrograman yang dikembangkan oleh Google dan penulis tidak merekomendasikan
ini. Kematangan teknologi yang dimiliki oleh PHYTON dan JAVA membuat keduanya menjadi pilihan utama. Untuk keperluan
artikel ini, penulis memilih JAVA sebagai platformpengembangannya.

Pertama-tama, anda harus menginstall JAVA 2 SDK terlebih dahulu. Versi yang penulis gunakan adalah J2SE versi 1.7u5. Anda
dapat mendownloadnya disini: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1637583.html.
Installer yang anda download akan menginstall berbagai macam library untuk Java 2 SDK, Java 2 Run-Time Environment dan
JavaFX.

Instalasi J2SE

Berikutnya adalah menginstall editor / IDE yang akan digunakan untuk menulis
program yang nantinya akan dijalankan didalam Google App Engine. Ada banyak
editor / IDE yang bisa anda gunakan, seperti NetBeans, TextPad dan lain-lain. Penulis
secara pribadi menggunakan ECLIPSE karena GAE telah menyediakan plug-in yang
spesifik ke program ini untuk keperluan coding, testing dan uploading app kedalam
GAE. ECLIPSE memiliki banyak model yang bisa didownload, seperti ECLIPSE for Java
EE DEVELOPER (enterprise java seperi EJB), ECLIPSE for Java Developer, ECLIPSE
Classic, dan lain-lain. Untuk keperluan ini, penulis memilih model ECLIPSE for Java EE
DEVELOPER karena package yang disediakan pada model ini cocok untuk keperluan kita. GAE berbasis Java akan menggunakan
teknologi Java Servlet dan/atau JSP (Java Server Pages) yang berbasis web, sehingga untuk memudahkan kita mengembangkan
aplikasi seperti ini kita membutuhkan package WebTool yang diberikan pada model instalasi ECLIPSE for Java EE DEVELOPER.
Untuk mendownload aplikasi ini, silahkan klik link berikut: http://www.eclipse.org/downloads. Pilihlah download yang sesuai
dengan sistem operasi yang anda gunakan. Jika anda ingin mendapatkan tabel komparasi ketersediaan package tiap model
instalasi ECLIPSE, silahkan klik link berikut: http://www.eclipse.org/downloads/compare.php.

Google telah menyediakan sebuah plugin khusus untuk eclipse guna


mempermudah kerja para developer. Plugin ini dapat didownload
di https://developers.google.com/eclipse. Sesuaikan plugin yang anda
download dengan versi eclipse yang telah anda miliki. Pada saat artikel
ini ditulis, versi eclipse yang dipakai adalah versi 4.2 (Juno). Beberapa
keuntungan menggunakan GPE (Google Plugin for Eclipse) adalah:

 New Web Application Wizard


 Cloud SQL Tooling
 Akses ke Google API
 Mudah untuk mengupload aplikasi ke App Engine
Yang terakhir adalah Google App Engine SDK (Software Development Kit) itu sendiri. SDK ini akan mensimulasikan lingkungan
cloud computing GAE secara lokal pada komputer anda. Dengan demikian, SDK ini mempermudah kerja developer didalam
mengembangan dan melakukan testing atas aplikasi yang mereka buat. Seperti biasa, ada baiknya anda meluangkan waktu
sejenak untuk membaca term-term yang mengikat SDK ini: https://developers.google.com/appengine/terms.

GAE SDK ini, seperti yang tertulis pada website resminya, selalu mengalami perbaikan secara kontinue, dengan kata lain SDK ini
sedang dalam active development. Untuk itu, setiap kali anda mendownload versi terbaru dari SDK-nya, perhatikan pada Release
Note yang diberikan guna mengetahui perubahan-perubahan didalam versi terbaru tersebut. Karena penulis memfokuskan
pembahasan pada JAVA for GAE, maka SDK yang harus anda download adalah SDK untuk Java development. Silahkan klik pada
link berikut: http://googleappengine.googlecode.com/files/appengine-java-sdk-1.7.0.zip .
Setelah semua aplikasi ini terinstall, hal terakhir yang harus dilakukan adalah membuat account di Google. Prosedurnya cukup
sederhana dan tidak ada hal-hal aneh. Untuk memulai membuat account, anda dapat klik pada link
ini: https://appengine.google.com. Setelah berhasil login, anda dapat memulai membuat aplikasi didalam Google App Engine.

(Java)Memperkenalkan java Servlet dan Membuat HelloWorld

Servlet adalah bahasa pemrograman Java kelas digunakan


untuk memperluas kemampuan dari server yang tuan aplikasi
mengakses melalui model pemrograman request-respon.
Meskipun servlet dapat menanggapi setiap jenis permintaan,
mereka biasanya digunakan untuk memperpanjang aplikasi
host oleh server Web. Dengan demikian, dapat dianggap
sebagai Java Applet yang berjalan pada server bukan browser.
Servlet adalah berbasis Java server-side teknologi web. Sesuai
namanya, melayani permintaan klien dan menerima respon dari
server. Secara teknis, Servlet adalah kelas Java dalam Java EE
yang sesuai dengan Java Servlet API, sebuah protokol di mana
kelas Java mungkin merespon permintaan. Mereka tidak terikat
dengan sebuah protokol client-server khusus, tetapi yang paling
sering digunakan dengan protokol HTTP. Oleh karena itu, kata “Servlet” sering digunakan dalam arti “Servlet HTTP”. [2] Dengan
demikian, seorang pengembang perangkat lunak dapat menggunakan servlet untuk menambahkan konten dinamis ke server
Web menggunakan platform Java. Isi dihasilkan umumnya HTML, tetapi mungkin data lain seperti XML. Servlets adalah mitra
Jawa non-Jawa teknologi konten web yang dinamis seperti PHP dan ASP.NET. Servlets dapat mempertahankan negara dalam
variabel sesi transaksi di server banyak dengan menggunakan cookie HTTP, atau menulis ulang URL.
Untuk menyebarkan dan menjalankan Servlet, wadah Web harus digunakan. Sebuah wadah Web (juga dikenal sebagai wadah
Servlet) pada dasarnya adalah komponen Web server yang berinteraksi dengan servlet. Wadah Web bertanggung jawab untuk
mengelola siklus hidup servlets, pemetaan URL ke servlet tertentu dan memastikan bahwa URL pemohon memiliki hak akses
yang benar.
API servlet, yang terkandung dalam hirarki javax.servlet paket Java, mendefinisikan interaksi yang diharapkan dari wadah Web
dan servlet [2].
Servlet adalah sebuah objek yang menerima permintaan dan menghasilkan respon berdasarkan permintaan itu. Paket servlet
mendefinisikan dasar Jawa objek untuk mewakili servlet permintaan dan tanggapan, serta sebagai objek untuk mencerminkan
konfigurasi servlet parameter dan lingkungan eksekusi. Paket javax.servlet.http mendefinisikan HTTP spesifik subclass dari
elemen servlet generik, termasuk objek manajemen sesi yang melacak beberapa permintaan dan tanggapan antara Web server
dan klien. Servlets dapat dikemas dalam file WAR sebagai aplikasi Web.
Servlets dapat dihasilkan secara otomatis dari JavaServer Pages (JSP) oleh kompilator JavaServer Pages. Perbedaan antara
Servlets dan JSP adalah bahwa Servlets biasanya menanamkan HTML di dalam kode Java, sedangkan JSP embed kode Java dalam
HTML. Sedangkan penggunaan langsung dari Servlets untuk menghasilkan HTML (seperti yang ditunjukkan pada contoh di
bawah) telah menjadi langka, tingkat yang lebih tinggi MVC kerangka web di Java EE (JSF) masih secara eksplisit menggunakan
teknologi Servlet untuk penanganan permintaan / tanggapan tingkat rendah melalui FacesServlet yang . Sebuah penggunaan
agak lebih tua adalah dengan menggunakan servlet bersama dengan JSP dalam pola yang disebut “Model 2”, yang merupakan
rasa pola model-view-controller.
Mungkin itu saja inti dari servlet itu sendiri kita akan langsung ke TKP(Tempat kejadian perkara),Sebelumnya kita akan
menggunakan server tomcat jadi bila teman teman belum mengistall server apache tomcat silakan kunjungi link ini javaebook-
install-tomcat-dan-configurasi-netbeans

Membuat Hello World

1. Buka Netbeans

2. Create Project pada file – new – project – java web – web application dan buat Nama Project dan finish
3. Masuk Ke Direktori Web page – WEB-INF – index.jsp

4. Ganti Scrip pada html tersebut dengan tulisan yang anda inginkan

5. Run Project tersebut dan hasil nya seperti ini.

Coding

-Servlet

HELLOAPPENGINE.JAVA

package edu.stts;
import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloAppEngine extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("<h1>Hello App Engine!</h1>");

out.print("<p>Cloud Computing</p>");

for (int i=1; i<=10; i++) {

out.println("Baris " + i + "<br/>");

PAGES.JAVA

package edu.stts;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class Pages

*/

public class Pages extends HttpServlet {


private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public Pages() {

super();

// TODO Auto-generated constructor stub

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,


IOException {

// TODO Auto-generated method stub

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<form method='post'>");

out.println("<input type='text' name='tName' placeholder='Name'/>");

out.println("<input type='submit' name='bSubmit1'/>");

out.println("</form>");

out.println("<hr/>");

out.println("<form>");

out.println("<input type='text' name='tAddress' placeholder='Address'/>");

out.println("<input type='submit' name='bSubmit2'/>");

out.println("<input type='submit' name='bRedirect' value='Redirect'/>");

out.println("</form>");

if (request.getParameter("bSubmit2") != null) {

String address = request.getParameter("tAddress");

out.println("<p>Address: " + address + "</p>");

if (request.getParameter("bRedirect") != null) {

response.sendRedirect("/cloud");
}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,


IOException {

// TODO Auto-generated method stub

// doGet(request, response);

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<h1>doPost</h1>");

String name = request.getParameter("tName");

out.println("<p>Name: " + name + "</p>");

-jsp

Index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>Cloud Computing</h1>

<form>
<p>Name: <input type="text" name="tName"/></p>
<p>City: <input type="text" name="tCity"/></p>
<p><input type="submit" name="bSubmit"/>
<input type="submit" name="bRedirect" value="Redirect"/></p>
</form>

<%
if (request.getParameter("bSubmit") != null) {
String name = request.getParameter("tName");
String city = request.getParameter("tCity");
session.setAttribute("sName", name);
session.setAttribute("sCity", city);
%>
<p>Name: <%= name %> </p>
<p>City: <%= city %></p>
<%
}
if (request.getParameter("bRedirect") != null) {
response.sendRedirect("page1.jsp");
}
%>

<p><a href="/hello">Servlet</a></p>

<%
for (int i=1; i<=10; i++) {
out.println("Baris " + i + "<br/>");
}
%>

</body>
</html>

PAGE1.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Page 1</h1>
<%
String name = session.getAttribute("sName").toString();
String city = session.getAttribute("sCity").toString();
%>
<p>Name = <%= name %></p>
<p>City = <%= city %></p>
</body>
</html>

PAGE2.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<%@ page import = "java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Page 2</h1>
<form>
<p>Name: <input type="text" name="tName"/></p>
<p><input type="submit" name="bSubmit"/></p>
</form>

<%!
ArrayList<String> nameList = new ArrayList<String>();
%>
<%
if (request.getParameter("bSubmit")!=null) {
String name = request.getParameter("tName");
nameList.add(name);
}

for (String name : nameList) {


out.println(name + "<br/>");
}

/*
for (int i = 0; i < nameList.size(); i++) {
String name = nameList.get(i);
out.println(name + "<br/>");
}
*/

%>
</body>
</html>

PAGE3.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Page 3</h1>
<form>
<p>A: <input type="text" name="tA"/></p>
<p>B: <input type="text" name="tB"/></p>
<p><input type="submit" value="Add" name="bAdd"/>
<input type="submit" value="Substract" name="bSubstract"/></p>
</form>
<jsp:useBean id="calc" class="edu.stts.Calculator"></jsp:useBean>
<%
if (request.getParameter("bAdd")!=null) {
int a = Integer.parseInt(request.getParameter("tA"));
int b = Integer.parseInt(request.getParameter("tB"));
int c = calc.add(a, b);
out.println("<p>Hasil: " + c + "</p>");
}
if (request.getParameter("bSubstract")!=null) {
int a = Integer.parseInt(request.getParameter("tA"));
int b = Integer.parseInt(request.getParameter("tB"));
int c = calc.substract(a, b);
out.println("<p>Hasil: " + c + "</p>");
}
%>

</body>
</html>

-datastore

INDEX.HTML

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Hello App Engine</title>
</head>

<body>
<h1>Hello App Engine!</h1>

<table>
<tr>
<td colspan="2" style="font-weight:bold;">Available Servlets:</td>
</tr>
<tr>
<td><a href='/hello'>The servlet</a></td>
</tr>
</table>
</body>
</html>

HELLOAPPENGINE.JAVA

package edu.stts;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.google.auth.oauth2.ServiceAccountCredentials;

import com.google.cloud.Timestamp;

import com.google.cloud.datastore.*;

public class HelloAppEngine extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("<h1>Datastore Servlet</h1>");

// Datastore datastore = DatastoreOptions.getDefaultInstance().getService();

Datastore datastore = DatastoreOptions.newBuilder().setProjectId("kuliah-


181701").setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("Kuliah-
61a876516fb5.json"))).build().getService();

// Insert
// KeyFactory keyFactory = datastore.newKeyFactory().setKind("Task");

// IncompleteKey key = keyFactory.newKey();

// FullEntity<IncompleteKey> newTask = FullEntity.newBuilder(key)

// .set("created", Timestamp.now()).set("description", "Fourth entity").set("done", true).build();

// datastore.add(newTask);

Query<Entity> query = Query.newEntityQueryBuilder().setKind("Task").build();

QueryResults<Entity> results = datastore.run(query);

// Update

// if (results.hasNext()) {

// Entity entity2 = results.next();

// Entity updatedEntity = Entity.newBuilder(entity2).set("description", "Updated entity").build();

// datastore.update(updatedEntity);

// out.println("Update done!");

// }

// Delete

// Entity entity2 = results.next();

// datastore.delete(entity2.getKey());

// out.println("Delete done!");

while (results.hasNext()) {

Entity entity = results.next();

out.println(entity.getKey().getId() + " - " + entity.getString("description") + " - " +


(entity.getTimestamp("created").toSqlTimestamp().getYear() + 1900) + "<br/>");

-datastore 2

HELLOAPPENGINE.JAVA

package edu.stts;

import java.io.*;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.auth.oauth2.ServiceAccountCredentials;

import com.google.cloud.datastore.*;

import com.google.cloud.datastore.StructuredQuery.OrderBy;

import com.google.cloud.datastore.StructuredQuery.PropertyFilter;

public class HelloAppEngine extends HttpServlet {

private Datastore datastore;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("<h1>Datastore Servlet</h1>");

datastore = DatastoreOptions.newBuilder().setProjectId("kuliah-
181701").setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("Kuliah-
61a876516fb5.json"))).build().getService();

Query<Entity> query = Query.newEntityQueryBuilder().setKind("Students").build();

QueryResults<Entity> results = datastore.run(query);

while (results.hasNext()) {

Entity entity = results.next();

out.println(entity.getString("StudentID") + " - " + entity.getString("StudentName") + "<br/>");

out.println("<br/>");

query = Query.newEntityQueryBuilder().setKind("Courses").build();

results = datastore.run(query);

while (results.hasNext()) {

Entity entity = results.next();

out.println(entity.getString("CourseID") + " - " + entity.getString("CourseName") +

" - " + entity.getLong("Credit") + "<br/>");

}
out.println("<br/>");

query =
Query.newEntityQueryBuilder().setKind("Grades").setOrderBy(OrderBy.asc("StudentID"),OrderBy.asc("CourseID")).build();

results = datastore.run(query);

while (results.hasNext()) {

Entity entity = results.next();

String studentID = entity.getString("StudentID");

String courseID = entity.getString("CourseID");

String studentName = getForeignKeyFor("Students", "StudentID", studentID, "StudentName");

String courseName = getForeignKeyFor("Courses", "CourseID", courseID, "CourseName");

// Query<Entity> query2 =

// Query.newEntityQueryBuilder().setKind("Students")

// .setFilter(PropertyFilter.eq("StudentID", studentID))

// .build();

// QueryResults<Entity> results2 = datastore.run(query2);

// String studentName = "";

// if (results2.hasNext()) {

// Entity entity2 = results2.next();

// studentName = entity2.getString("StudentName");

// }

// query2 =

// Query.newEntityQueryBuilder().setKind("Courses")

// .setFilter(PropertyFilter.eq("CourseID", courseID))

// .build();

// results2 = datastore.run(query2);

// String courseName = "";

// if (results2.hasNext()) {

// Entity entity2 = results2.next();

// courseName = entity2.getString("CourseName");

// }

out.println(studentID + " - " + studentName + " - " + courseID +

" - " + courseName + " - " + entity.getLong("Score") + "<br/>");

}
}

private String getForeignKeyFor(String kindName, String propertyName, String propertyValue, String targetPropertyName) {

Query<Entity> query2 =

Query.newEntityQueryBuilder().setKind(kindName)

.setFilter(PropertyFilter.eq(propertyName, propertyValue))

.build();

QueryResults<Entity> results2 = datastore.run(query2);

String returnValue = "";

if (results2.hasNext()) {

Entity entity2 = results2.next();

returnValue = entity2.getString(targetPropertyName);

return returnValue;

-storage

HELLOAPPENGINE.JAVA

package edu.stts;

import java.io.*;

import java.nio.charset.Charset;

import java.nio.charset.StandardCharsets;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.google.api.gax.paging.Page;

import com.google.auth.oauth2.ServiceAccountCredentials;

import com.google.cloud.storage.*;

public class HelloAppEngine extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {
response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("<h1>Cloud Storage</h1>");

Storage storage = StorageOptions.newBuilder().setProjectId("kuliah-


181701").setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("Kuliah-
61a876516fb5.json"))).build().getService();

String bucketName = "kuliah-181701.appspot.com";

Page<Bucket> buckets = storage.list();

Iterable<Bucket> bucketIterator = buckets.iterateAll();

for (Bucket b : bucketIterator) {

out.println(b.getName() + "<br/>");

Page<Blob> blobs = storage.list(bucketName);

Iterable<Blob> blobIterator = blobs.iterateAll();

for (Blob b : blobIterator) {

out.println(b.getName() + "<br/>");

out.println("<p/>");

Blob blob = storage.get(bucketName, "test.txt");

String content = new String(blob.getContent());

String[] lines = content.split("\n");

for (String s : lines) {

out.println(s + "<br/>");

out.println("<p/>");

BlobId blobId = BlobId.of(bucketName, "test3.txt");

BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();

String fileContent = "Test 8\nTest 9\nTest 10 ";

Blob blob2 = storage.create(blobInfo, fileContent.getBytes(Charset.defaultCharset()),


Storage.BlobTargetOption.doesNotExist());

// Blob blob2 = storage.create(blobInfo, fileContent.getBytes(StandardCharsets.UTF_8));

out.println("<p>File created!</p>");

Anda mungkin juga menyukai