Archive for 2014-03-23
Bahasa Pemrograman Tingkat Rendah
Assembly Language (Ndoware, 2009) |
Apakah itu bahasa pemrograman tingkat rendah?
Menurut Axe (2011), bahasa pemrograman yang berorientasi mesin. Disebut tingkat rendah karena lebih mendekat bahasa mesin dari pada bahasa manusia. Salah satu bahasa pemrograman tingkat rendah adalah bahasa rakitan (Assembly).
Menurut Wikipedia (2010), bahasa rakitan atau lebih umum dikenal sebagai Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor dan perangkat lainnya yang dapat diprogram. Bahasa rakitan mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia.
Ada beberapa dasar alasan menggunakan bahasa rakitan dilihat dari sudut pandang penggunaannya dikutip dari Wikipedia.
- Bahasa rakitan dibandingkan dengan bahasa mesin, bahasa rakitan merupakan representasi atas bahasa mesin yang dirancang agar lebih mudah dipahami oleh manusia. Dengan menggunakan bahasa rakitan, seorang programmer dapat lebih mudah mengingat instruksi-instruksi dengan menggunakan simbol yang lebih dimengerti dibandingkan bila menggunakan simbol mnemonic kode mesin secara langsung. Demikian halnya pula dengan mekanisme lompatan yang umum terdapat dalam bahasa mesin yang biasanya menggunakan alamat memori, programmer dapat lebih mudah menggunakan fasilitas pelabelan yang terdapat pada bahasa rakitan dibandingkan menggunakan alamat memori tertentu dalam kode mnemonic.
- Bahasa rakitan dibandingkan dengan bahasa tingkat tinggi, bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.
Kelebihan kekurangan.
- Kompatibilitas bahasa sangat terbatas pada mesin tertentu sehingga tidak bsia dijalankan disembarangan mesin. Sehingga di sisi kompatibilitas, assembly tidak bisa menandingin bahasa pemrograman tingga tinggi.
+ Karena menggunakan bahasa yang mendekati bahasa mesin, assembly bisa memanfaatkan sumber daya mesin secara maksimal dibandingkan bahasa pemrograman tingkat tinggi.
+ Ukuran yang sangat kecil sehingga sangat ringan untuk dijalankan sehingga banyak virus yang dibangun menggunakan bahasa ini sehingga sangat sulit untuk dideteksi.
Ref:
Axe. (2011). Bahasa Pemrograman Tingkat Rendah (Low Level Language). Tersedia: http://13nightevil.blogspot.com/2011/04/bahasa-tingkat-rendah-low-level.html, diakses pada 22 Maret 2014.
Wikipedia. (2010). Bahasa Rakitan. Tersedia: http://id.wikipedia.org/wiki/Assembly, diakses pada 22 Maret 2014.
Apa itu AndroidManifest.xml?
Setiap
aplikasi mobile android pasti memiliki sebuah file AndroidManifest.xml pada direktori rootnya.
The manifest file menyajikan
informasi esensial kepada sistem android tentang aplikasi anda,
menginformasikan apa yang harus dimiliki sistem sebelum menjalankan apapun code yang ada pada aplikasi. Manifest
melakukan hal-hal berikut:
- Menamai paket Java untuk aplikasi. Nama paket berfungsi sebagai identifikasi unik untuk aplikasi
- Mendeskripsikan komponen-komponen aplikasi (aktivitas-aktivitas, servis-servis, penerima broadcast, dan penyedia konten aplikasi)
- Menentukan proses mana yang akan menjalankan komponen-komponen aplikasi
- Mendeklarasikan hak akses mana yang harus dimiliki aplikasi untuk mengakses bagian-bagian API yang terproteksi dan untuk berinteraksi dengan aplikasi lainnya.
- Mendeklarasikan hak akses yang perlu dimiliki oleh aplikasi lain untuk berinteraksi dengan komponen-komponen aplikasi
- Mendaftarkan kelas-kelas Instrumentation yang menyediakan pemrofilan dan informasi lainnya sesuai jalannya aplikasi. Deklarasi ini terdapat dalam manifest hanya ketika aplikasi sedang dikembangkan dan diuji; deklarasi ini dihilangkan sebelum aplikasi dipublikasi
- Mendeklarasikan tingkat minimum dari API android yang dibutuhkan aplikasi
- Mendaftarkan library yang harus dihubungkan dengan aplikasi
Struktur dari File Manifest
Diagram
di bawah menunjukkan struktur umum dari file manifest dan setiap elemen yang
terdapat di dalamnya.
<?xml version="1.0" encoding="utf-8"?> <manifest> <uses-permission /> <permission /> <permission-tree /> <permission-group /> <instrumentation /> <uses-sdk /> <uses-configuration /> <uses-feature /> <supports-screens /> <compatible-screens /> <supports-gl-texture /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> <meta-data /> </activity> <activity-alias> <intent-filter> . . . </intent-filter> <meta-data /> </activity-alias> <service> <intent-filter> . . . </intent-filter> <meta-data/> </service> <receiver> <intent-filter> . . . </intent-filter> <meta-data /> </receiver> <provider> <grant-uri-permission /> <meta-data /> <path-permission /> </provider> <uses-library /> </application> </manifest>
Elemen-Elemen File Manifest
1. <action>
Menambahkan sebuah
aksi pada intent filter. Sebuah elemen <intent-filter>
harus memuat satu atau lebih elemen <action>.
Jika tidak mengandung satu pun, tidak ada objek intent yang akan melewati
filter.
2. <activity>
Mendeklarasikan
sebuah aktivitas (subkelas Activity) yang
mengimplementasikan bagian dari antarmukavisual pengguna aplikasi. Semua
aktivitas harus direpresentasikan oleh elemen <activity>
di dalam file manifest. Aktivitas yang tidak dideklarasikan disana tidak akan
dilihat oleh sistem dan tidak akan pernah berjalan.
3. <activity-alias>
Sebuah alias
untuk aktivitas dinama oleh atribut targetActivity.
Target harus berada dalam aplikasi yang sama dengan alias dan harus
dideklarasikan sebelum alias dalam manifest.
4. <application>
Deklarasi dari
aplikasi. Elemen ini mengandung subelemen yang mendeklarasikan masing-masing
komponen aplikasi dan memiliki atribut yang bisa mempengaruhi semua komponen.
5. <category>
Menambah sebuah
nama kategori pada sebuah intent filter.
6. <data>
Menambah sebuah
spesifikasi data pada sebuah intent. Spesifikasi bisa hanya sebuah tipe data,
sebuah URI, atau keduanya.
7. <grant-uri-permission>
Menentukan
subset data dari penyedia konten induk mana yang bisa diberi hak akses. Subset
data diindikasikan oleh bagian path dari sebuah content: URI.
8. <instrumentation>
Mendeklarasikan
sebuah kelas instrumentation yang memungkinkan kita untuk mengawasi interaksi
sebuah aplikasi dengan sistem. Objek instrumentation diinstansiasi sebelum komponen
aplikasi.
9. <intent-filter>
Menentukan tipe
intent yang akan merespon sebuah aktivitas, servis atau penerima broadcast.
Sebuah intent filter mendeklarasikan kemampuan dari komponen induknya,
aktivitas atau servis apa yang bisa dilakukan dan tipe broadcast apa yang bisa
di tangani oleh penerima. Intent filter membuka komponen untuk menerima intent
yang bertipe iklan, sambil menyaring intent yang tidak berarti untuk komponen.
10.<manifest>
Elemen dasar
dari file AndroidManifest.xml, harus memuat sebuah elemen <application>
dan menetapkan atribut xmlns:android dan package.
11.<meta-data>
Sepasang
nama-nilai untuk item data tambahan, sembarang yang dapat diberikan kepada
komponen induk. Sebuah elemen komponen dapat berisi sejumlah subelemen <meta-data>.
12.<permission>
Mendeklarasikan
sebuah izin keamanan yang bisa digunakan untuk menetapkan komponen atau fitur
dari aplikasi ini atau lainnya.
13.<permission-group>
Mendeklarasikan
nama untuk pengelompokan logis dari izin yang terkait. Izin individual masuk ke
dalam kelompok melalui atribut permissionGroup dari elemen <permission>.
Anggota grup disajikan bersama dalam antarmuka pengguna.
14.<permission-tree>
Mendeklarasikan
nama dasar untuk pohon hak akses. Aplikasi mengambil kepemilikan dari semua
nama di dalam pohon. Hal ini dapat secara dinamis menambah izin ke dalam pohon
dengan memanggil PackageManager.addPermission().
15.<provider>
Mendeklarasikan
komponen penyedia konten. Penyedia konten adalah sebuah subkelas dari ContentProvider
yang menyediakan akses data terstruktur yang diatur oleh aplikasi. Semua
penyedia konten dalam aplikasi kita harus didefinisikan dalam sebuah elemen <provider>
dalam file manifest, kalau tidak maka sistem tidak akan menyadari kehadirannya
dan tidak menjalankannya.
16.<receiver>
Mendeklarasikan
sebuah penerima broadcast (subkelas BroadcastReceiver)
sebagai salah satu dari komponen aplikasi. Penerima broadcast memungkinkan
aplikasi untuk menenrima intent yang disiarkan oleh sistem atau aplikasi
lainnya, bahkan ketika komponen lain dari aplikasi tidak berjalan.
17.<service>
Mendeklarasikan
suatu servis (subkelas Service) sebagai salah satu
dari komponen aplikasi. Tidak seperti aktivitas, servis tidak memiliki
antarmuka visual pengguna. Mereka digunakan untuk mengimplementasikan operasi
long-running background atau komunikasi API yang dipanggil oleh aplikasi lain.
18.<supports-screens>
Menetapkan
ukuran layar yang didukung aplikasi dan memungkinkan mode kompatibiltas layar
untuk layar yang lebih besar dari yang didukung oleh aplikasi.
19.<uses-configuration>
Mengindikasikan
fitur hardware dan software apa yang dibutuhkan oleh aplikasi.
20.<uses-feature>
Mendeklarasikan
fitur tunggal hardware atau software yang digunakan oleh aplikasi.
21.<uses-library>
Menetapkan
library berbagi yang harus dihubungkan dengan aplikasi.
22.<uses-permission>
Meminta izin
yang harus diberikan kepada aplikasi agar beroperasi dengan benar.
23.<uses-sdk>
Dengan elemen ini kita
bisa menyatakan kompatibilitas sebuah aplikasi dengan satu atau lebih versi
platform Android, melalui sebuah tingkat integer API.
Sumber: developer.android.com