Java2 Micro Editon (J2ME)

Slides:



Advertisements
Presentasi serupa
Membuat Laporan di Java Dengan iReport
Advertisements

GUI MENGGUNAKAN HANDPHONE BERFASILITAS J2ME
BAHASA PEMROGRAMAN JAVA
Fakultas Teknologi Informasi Universitas Budi Luhur BAHASA PEMROGRAMAN 4 Pertemuan III Oleh: Seno, S.Kom.
IT603 Ramos Somya.  Mahasiswa mampu memahami konsep dan penerapan komputasi mobile dan aplikasinya.
Dosen: Zakki Falani, S.Kom Fakultas Ilmu Komputer Universitas Narotama
MIDP, MIDLet & Antar Muka J2ME
Dosen: Zakki Falani, S.Kom Fakultas Ilmu Komputer Universitas Narotama
MIDlet User Interface (3) As’ad Djamalilleil
Komponen Class Item (2) As’ad Djamalilleil
Struktur Kode Program MIDlet As’ad Djamalilleil
WITH FANDI SUSANTO S.SI. Pemrograman Aplikasi Bergerak By Fandi Susanto S.Si.
Struktur Kode Aplikasi Java (2) As’ad Djamalilleil
Antarmuka Tingkat Bawah (Canvas)
Web Teknologi 3 (MKB721C) Minggu 2 Page 1 MINGGU 2 Web Teknologi 3 (MKB721C) Pokok Bahasan: –Midlet –User Interface Tujuan Instruksional Khusus: Agar.
Komponen Class Item (3) As’ad Djamalilleil
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
MIDlet User Interface (2) As’ad Djamalilleil
Instalasi JME & Uji Coba As’ad Djamalilleil
Praktikum OOP Pengenalan Java Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
Komponen Class Item (1) As’ad Djamalilleil
Struktur Kode Aplikasi Java (1)
Pemrograman Aplikasi Bergerak
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
WITH FANDI SUSANTO S.SI. Pemrograman Aplikasi Bergerak By Fandi Susanto S.Si.
Object Form, Label, Textbox, & Command Button
Komponen-Komponen dalam J2ME
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) “Skill to do comes of doing. “ (Ralph Waldo Emerson)
J2ME, Configuration & Profile
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME)
MIDP (MIDlet) dan Tools
PEMOGRAMAN APLIKASI BERGERAK (Java ME)
PROGRAM APLIKASI MOBILE EMHA TAUFIQ LUTHFI PERTEMUAN 5 (18 APRIL 2011)
Elemen Dasar pada Windows Form Pemrograman Visual I 4 sks Renni Angreni, M.Kom. This Slide from Herianto.
APLIKASI TES IQ DENGAN MENGGUNAKAN JAVA 2 MICRO EDITION PADA PERANGKAT MOBILE 1. PENDAHULUAN.
H. Risdiandri Iskandar, SKom, MM
Company LOGO PEMOGRAMAN APLIKASI BERGERAK (Java ME) Nyimas Artina.
PROGRAM APLIKASI MOBILE EMHA TAUFIQ LUTHFI PERTEMUAN 2.
Mobile Device & J2ME Oleh : Oman Somantri, S.Kom
PROGRAM APLIKASI MOBILE EMHA TAUFIQ LUTHFI PERTEMUAN 4 (12 APRIL 2011)
Pengenalan low level UI Pengenalan tentang Canvas Menggambar dan menampilkan teks, gambar, garis, kotak, dan sudut Menentukan warna, huruf, dan coretan.
MIDP Low Level User Interface
Pemrograman Aplikasi Bergerak
Graphical User Interface (GUI)
PERTEMUAN 5 TextField merupakan turunan Item yang bisa menampung teks dan mengedit teks tersebut. TextField mempunyai ukuran maksimum, label dan format.
Pemrograman berorientasi objek
Menggunakan Form Pertemuan Ke-3.
MOBILE TECNOLOGY (J2ME)
High Level User Interface
MODUL – II MEMBUAT PROGRAM SEDERHANA
MIDP High-Level User Interface
Visual Studio 2008 Merupakan perangkat lunak yang terintegrasi. Di dalamnya terdapat beberapa perangkat lunak untuk pengembang ( Programmer ), antara lain.
Skenario 2: Hujan Pemrograman Game Eko Prasetyo Teknik Informatika
Form & Item Oleh : Oman Somantri S.Kom
MIDlet User Interface (2)
Struktur Kode Program MIDlet
As’ad Djamalilleil Komponen Class Item (2) As’ad Djamalilleil
Membangun User Interface
As’ad Djamalilleil Komponen Class Item (1) As’ad Djamalilleil
As’ad Djamalilleil Komponen Class Item (3) As’ad Djamalilleil
As’ad Djamalilleil Class List As’ad Djamalilleil
MIDlet User Interface (3)
Graphical User Interface (GUI)
Pengembangan Aplikasi Mobile
Mobile Teknologi Pertemuan 3 Agung Brastama Putra.
Mobile Teknologi Pertemuan 3
Instalasi JME & Uji Coba
Meriska Defriani, M.Kom Workshop Pemrograman #2 HUMANIKA
Pengenalan J2ME, Configuration & Profile
Menggunakan Form Pertemuan Ke-3.
Transcript presentasi:

Java2 Micro Editon (J2ME) Pertemuan IX By Seno

Fakultas Teknologi Informasi Universitas Budi Luhur Pendahuluan Java2 adalah generasi ke dua dari java platform (generasi pertama adalah Java Development Kit). Platform java memiliki tiga buah edisi yang berbeda yaitu: J2EE (Java2 Enterprice Edition), J2SE (Java2 Second Edition) dan J2ME (Java2 Micro Edition). J2ME yang merupakan bagian dari J2SE adalah program java yang khusus digunakan untuk membuat aplikasi di mobile device seperti handphone, PDA, dll. Keunggulan J2ME adalah kemampuannya berjalan diperangkat yang memiliki memory yang relatif kecil. Keterbatasan J2ME sangat tergantung pada perangkat yang digunakan, terutama jika diaplikasikan di handphone, bisa dari segi merk, kemampuan dan dukungannya terhadap J2ME. Pada J2ME terdapat dua konfigurasi yaitu CLDC (Connected Limited Device Configuration) untuk perangkat kecil dan CDC (Connected Device Configuration) untuk perangkat yang lebih besar. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Pendahuluan J2ME terdapat 2 buah profile, yaitu MIDP (Mobile Information Device Profile) dan Foundation Profile. MIDP adalah spesifikasi dari sebuah profil J2ME. MIDP memiliki lapisan di atas CLDC, API tambahan untuk daur hidup aplikasi, antarmuka, jaringan dan penyimpanan persistensi. MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian dari kelas javax.microedition.midlet.MIDlet yang didefinisikan pada MIDP. MIDlet berupa sebuah kelas abstrak yang merupakan sub kelas dari bentuk dasar aplikasi sehingga antar muka antara aplikasi J2ME dan aplikasi manajemen pada perangkat dapat terbentuk. MIDlet terdiri dari dari beberapa methode yang harus ada yaitu constructor(), protected void startApp() throws MIDletStateChangeException, protected void pauseApp() , protected void destroyApp() throwhs MIDletStateChangeException. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Daur Hidup MIDlet konstruktor terminasi aktif jedah MIDlet memanggil pauseApp() MIDlet memanggil startApp() MIDlet memanggil pauseApp() untuk terminasi Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Dalam implementasinya, MIDlet memiliki struktur direktori sebagai berikut: src menyimpan source code untuk MIDlet dan kelas lain yang diperlukan res menyimpan suber daya yang diperlukan seperti gambar icon lib menyimpan file JAR atau ZIP yang berisi library tambahan yang dibutuhkan bin menyimpan file JAR, JAD, dan file manifest yang berisi muatan komponen MIDlet. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur J2ME Wireless Toolkit J2ME Wireless Toolkit (WTK) adalah emulator (meniru kerja ponsel) aplikasi J2ME untuk small device. Oleh sebab itu aplikasi yang berjalan di emulator belum tentu dapat berjalan di device yang sebenarnya, tergantung pada kemampuan dan kapasitas device yang digunakan. J2ME WTK berbasiskan pada CLDC (Connected Limited Device Configuration) dan MIDP (Mobile Information Device Profile). J2ME WTK dapat di-download di http://java.sun.com/j2me. Untuk menjalankan program, terlebih dahulu harus menginstall JDK (Java Development Kit) dan Java Wireless Toolkit pada komputer, kemudian buka All Program  J2ME Wireless Toolkit  Ktoolbar hingga muncul jendela seperti gambar berikut: Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Untuk membuat project aplikasi J2ME, klik New Project, lalu isikan nama project dan nama kelas MIDlet, lalu klik tombol Create Project. Seteleh project selesai dibuat maka pada direktori install/apps atau C:/WTK22/apps akan terbentuk sebuah direktori dengan nama yang sama dengan nama project yang baru saja dibuat. Di dalam direktori tersebut terdapat beberapa direktori diantaranya yaitu bin, lib, res dan src, serta sebuah file project.properties yang menyimpan setting MIDlet. NamaProject NamaKelas Fakultas Teknologi Informasi Universitas Budi Luhur

Setting Project Aplikasi J2ME Setting dapat dilakikan di KToolbar. Klik setting untuk melakukan setting akan muncul jendela seperti gambar di bawah, jika ingin menggunakan settingan standar klik Ok: Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur API Selection API / Spesifikasi Fungsi API Mobile Media API (MMAPI) Keperluan pengaksesan multimedia Wireless Messaging API (WMAPI) Pengiriman pesan Web Service Acces for J2ME Menyediakan akses standar dari J2ME ke web server PDA Profile for J2ME Mendefinisikan profile dengan API standar untuk perangkat sejenis PDA Bluetooth/OBEX (Object Excange) for J2ME Spessifikasi yang berhubungan dengan bluetooth,pengiriman object dan Service Discovery Protocol Mobile 3D graphics for J2ME Berhubungan dengan pepbuatan grafik 3 dimensi Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Required dan Optional Tab required dan optional merupakan setting yang berisi atribut MIDlet Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur User Defined Tab User Defined digunakan untuk mendefinisikan properti yang biasanya digunakan untuk pengaksesan sumber daya dalam aplikasi J2ME. Untuk menambahkan properti klik Add lalu masukkan key dan value. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur MIDlets Tab MIDlets berfungsi untuk mendefinisikan nama MIDlet, nama kelas utama aplikasi, dan icon aplikasi yang diisi dengan nama file icon yang akan digunakan, file icon diletakkan dalam direktori res. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Built and Run Tombol Built digunakan untuk mengkompilasi program. Setelah proses kompilasi selesai, akan terbentuk beberapa direktori baru di antaranya : class kumpulan file .class hasil kompilasi setelah dipreverifikasi tmpclasses kumpulan file .class sebelum dipreverifikasi Tmplib menyimpan copy file dari file JAR dan ZIP yang berada pada direktori lib dimana didalamnya telah dikonversi menjadi bentuk yang telah dipreverivikasi. Setelah proses kompilasi selesai, klik tombol Run untuk menjalankan aplikasi. Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Program Pertama Jalankan J2ME Wireless Toolkit  KToolbar Klik Create Project, lalu ketikkan ‘HelloWord’ di Project Name dan Midlet Class Name. Akan muncul window untuk melakukan setting, klik ‘Ok’ untuk settingan Standard. Buka editor (misalnya: JCreator, notepad, dll), lalu ketikkan program di slide berikut. Simpan program tersebut dengan nama HelloWord.java dan simpan di C:/WTK22/apps/HelloWord/src/ Kompile program dengan meng-klik tombol ‘Build’ pada KToolbar, jika tidak ada error, lanjutkan dengan meng-klik tombol ‘Run’. Maka akan muncul ‘Emulator’ handphone, klik keypad ‘Launch’ pada emulator. Untuk keluar dari prorgam klik tombol keypad ‘exit’ Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur HelloWord import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HelloMIDlet extends MIDlet implements CommandListener { private Form mMainForm; public HelloMIDlet(){ mMainForm = new Form("Hello World"); mMainForm.append(new StringItem(null, "Hello Teman Teman Budiluhur")); mMainForm.addCommand(new Command("Exit", Command.EXIT,0)); mMainForm.setCommandListener(this); } public void startApp() { Display.getDisplay(this).setCurrent(mMainForm); public void pauseApp() {} public void destroyApp(boolean unconditional){} public void commandAction(Command c, Displayable s) { notifyDestroyed(); Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur

Komponen-komponen J2ME Display Form Displayable Item Screen TextField Canvas ChoiseGroup Graphics DateField Font Gauge Command Image List ImageItem Alert StringItem Ticker CustomItem TextBox Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Display Display merupakan objek yang merepresentasikan pengelola layar pada perangkat. Pada sebuah MIDlet hanya terdapar sebuah objek Display. Display menyediakan methode untuk menggambar dan menampilkan elemen UI grafis pada layar. Display juga menyediakan methode untuk mengetahui property layar pada perangkat, apakah perangkat mendukung warna atau tidak. Pada library J2ME, objek Display terdapat pada kelas javax.microediton.lcdui.Display; Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Displayable Adalah kelas abstrak dari user interface. Memiliki dua sub kelas yakni : Canvas : sebagai antarmuka level rendah Screen : sebagai antarmuka level tinggi Suatu MIDlet boleh terdapat lebih dari satu objek Dislayable, namun pada satu saat hanya dapat ditampilkan satu buah objek Displayable oleh objek Display. Terdapat pada kelas javax.microedition.lcdui.Displayable; Methode Keterangan void addCommand(Command cmd) Menambahkan objek command void removeCommand(Command cmd) Menghapus Objek Command dari Displayable void setCommandListener(CommandListener 1) Menambahkan CommandListener boolean isShown() True jika Displayable dapat ditampilkan Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Screen Adalah kelas di atas semua user interface level tinggi (superclass). Didefinisikan pada library J2ME javax.microediton.lcdui.Screen; Methode Keterangan String getTitle() Mengembalikan nilai title void setTitle(String str) Mengeset Title Screen Ticker getTicker() Mengembalikan ponter ticker void setTicker(Ticker ticker) Mengeset Ticker pada screen Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Canvas Merupakan sub kelas dari Displayable yang menggunakan UI level rendah. Semua elemen yang akan ditampilkan harus dipasang pada Canvas dengan menggunakan objek Graphics. Canvas mempunyai methode ‘paint(Graphics g)’ yang akan dipanggil setiap kali Canvas terbentuk dan methode ‘repaint()’ dipanggil. Methode Keterangan Int getWidth() Lebar canvas Int getHeight Tinggi canvas Abstract void paint(Graphics g) Menggambar canvas menggunakan graphics Final void repaint() Menggambar ulang canvas Final void repaint(int x, int y, int width, int height) Menggambar ulang canvas pada wilayah tertentu Void setFullScreenMode(boolean mode) Satu layar penuh Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Graphics Adalah objek yang digunakan untuk menggambarkan gambar, maupun string pada layar. Akan dipanggil otomatis saat objek canvas terbentuk Konstanta Keterangan Graphics.LEFT Paling kiri horisontal Graphics.HCENTER Center horisontal Graphics.RIGHT Graphics.TOP Graphics.BUTTOM Graphics.VCENTER Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Methode Graphics Void translate(int x, int y) Memindahkan titik origin 0,0 ke x, y Int getTranslateX() Nilai koordinat x setelah translasi Int getTranslateY() Nilai koordinat y setelah translasi Void setClip(int x, int y, int width, int height) Mengatur wilayah clip Void clipRect(int x, int y, int width, int height) Mengiris wilayah seluas x X y Int getClipX() Koordinat x clip Int getClipY() Koordinat y clip IntGetCliptHeight() Panjang clip IntGetClipWidth() Lebar clip Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Methode Graphics Methode Keterangan Void setColor(int RGB) Warna dengan kombinasi RGB Void setColor(int red, int green, int blue) Warna dengan spesifikasi komponen RGB Int getColor() Nilai warna dalam integer Int getRedComponent() Nilai komponen merah Int getGreenComponent() Nilai komponen hijau Int getBlueComponent() Nilai komponen biru Void setGrayScale(int value) Mode warna grayScale Int getGrayScale() Nilai warna grayScale Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Font Digunakan untuk antar muka level rendah (spt canvas) Digunakan untuk mendefinisikan String atau karakter ke layar Mode Jenis(face) Ukuran STYLE_BOLD STYLE_ITALIC STYLE_UNDERLINED STYLE_PLAIN FACE_MONOSPACE FACE_PROPORTIONAL FACE_SYSTEM SIZE_LARGE SIZE_SMALL SIZE_MEDIUM Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Methode Font Methode Keterangan Static Font getFont(int face, int style, int size) Mengembalikan nilai font baru Static Font getDefaultFont() Nilai font system Int getFace() Jenis Font Int getStyle() Style Int getSize() Ukuran Boolean isPlain() True jika yg digunakan adalah plain Boolean isBold() True jika style tebal Boolean isItalic() True jika style miring Boolean isUnderlined() True jika style garis bawah Int getHeight() Nilai tinggi Int getBaseLinePosotion() Kenaikan Font dari garis dasar Int charWidth() Tinggi font Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur TextBox Adalah sebuah objek yang ditujukan agar user dapat memasukkan text dan mengeditnya. Merupakan sub kelas dari Screen Methode Keterangan TextBox(String title, String text, int maxSize, int constraints) Membuat textbox dengan nama title, text text ukuran maxSize dan batasan constarints Void delete(int offset, int length) Menghapus karakter mulai dari karakter ke offset sepanjang length Void insert(String src, int position) Menambahkan String src pada posisi position – 1 Void setChars(char[] data, int offset, int length) Mengganti isi textbox pada index ke offset (mulai dari 0), sepanjang length dengan data Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Methode TextBox Methode Keterangan Int getChars(char[] data) Memasukkan text pada textbox ke array data String getString() Mengembalikan text pada texbox Void setString(String text) Mengatur isi textbox Int getConstraints() Mengembalikan nilai batasan Void setConstraints(int constraints) Mengatur batasan (constraints) Int getMaxSize() Mengembalikan ukuran maksimal karakter pada textbox Int setMaxSize(int maxSize) Mengatur ukuran karakter Int getCaretPosition() Mengembalikan nilai pososi kursor Int size() Mengembalikan jumlah karakter Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Merupakan halaman untuk menginput data. Bisa terdiri dari komponen-komponen yang disebut item. Pengaksesan item-item dapat dilakukan dengan menggunakan index. Methode Keterangan Form(String title) Membuat form dengan nama title Form(String title, item[] item) Membuat form dg nama title, dan elemen item Int append(Image img) Menambahkan image Int append(Item item) Menambahkan item Int append(String str) Menambahkan string Void delete(int item) Menghapus item Void insert(int itemNum, Int item) Menambah item dengan index itemNum Item get(int itemNum) Mengembalikan item dengan index itemNum Void set(int itemNum, Item item) Mengganti item dg index itemNum dg item baru Void setItemSetListener(ItemSetListener iListener) Menambah item listener pada form Int size() Mengembalikan jumlah item pada form Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Item Adalah kelompok dari elemen grafik yang dapat ditambahkan ke form (ImageItem, StringItem, TextField, DateField, ChoiseGroup dan Gauge). Komponen-komponen yang dapat dimasukan Methode Form Keterangan String getLabel() Mengembalikan nilai label Void setLabel(String label) Mengeset label item Tipe Item Keterangan Item.BUTTON Item ditampilkan sebagai button Item.HYPERLINK Item ditampilkan sebagai hyperlink Item.PLAIN Item ditampilkan secara normal Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur TextField Adalah sebuah objek untuk menginputkan text. Merupakan sub kelas dari Item Mempunyai batasan : TextField.ANY (Mengijinkan semua inputan karakter) TextField.EMAILADDR (hanya mengijinkan alamat inputan email) TextField.NUMERIC (hanya mengijinkan inputan numeric) TextField.PHONENUMBER (hanya mengijinkan nomor telepon) TextField.URL (hanya mengijinkan alamat URL) TextField.PASSWORD (biasanya gabungan TextField.PASSWORD | TextField.ANY atau TextField.PASSWORD | TextField.NUMERIC) Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur Methode TextField Methode Keterangan Int getChars(char[] data) Memasukkan text pada textbox ke array data String getString() Mengembalikan text pada texbox Void setString(String text) Mengatur isi textbox Int getConstraints() Mengembalikan nilai batasan Void setConstraints(int constraints) Mengatur batasan (constraints) Int getMaxSize() Mengembalikan ukuran maksimal karakter pada textbox Int setMaxSize(int maxSize) Mengatur ukuran karakter Int getCaretPosition() Mengembalikan nilai pososi kursor Int size() Mengembalikan jumlah karakter Void TextField(String label,String text, int maxSize, int conctraints ) Membuat textfield dengan label label, text text, ukuran maksimal, batasan) Void delete(int offset, int length) Menghapus text dari offset s.d length Void insert(String src, int position) Menambah string pada posisi position Fakultas Teknologi Informasi Universitas Budi Luhur

Fakultas Teknologi Informasi Universitas Budi Luhur