Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 1 Pemrograman Java Dasar (Standard Edition) Pokok Bahasan Pendahuluan Sub Pokok Bahasan 1. 2. 3. 4. 5. 6. Dasar Pemrograman Java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Pertemuan Sekilas ruang lingkup matakuliah Review beberapa materi dari matakuliah lain yang terkait (sebagai prasyarat, paralel dan saling mendukung) Sistem pembelajaran, penilaian dan hal lainnya. Sejarah Bahasa Pemrogrmaan Java Kelebihan Java Edisi & Platform Java 1 Instalasi Java dan Setting Pengenalan Netbeans & Eclipse Cara Kerja dan Jenis Aplikasi Java Struktur Dasar Program Java Komentar Operasi Masukan & Keluaran Literal Tipe Data Deklarasi Variabel & Konstanta Operator Aritmatika Operator Penambahan & Pengurangan Operator Penugasan Operator Bit Operator Type Casting Operasi String dan Character Operasi Matematik Operasi Waktu Sub Program (Procedure & Functon) Penanganan Kesalah 2-3 Javapemula:61 Javapemula:48 Javapemula:87 Seleksi & Kondisi 1. if-else 2. switch-case 3. Operator Logika 3 Pengulangan 1. 2. 3. 4. 5. 4 Array 1. Array 1 Dimensi 2. Array Multi-Dimensi Pengenalan Pemrograman Orientasi Objek 1. Konsep Pemrograman Berorientasi Objek 2. Class dan Object 3. Method/Fungsi 4. Ruang Lingkup Variabel & Method/Fungsi 5. Penggunaan This 6. Constructor & Overloading 7. Inheritance 8. Polymorphism 9. Interface Evaluasi Mid do-while while for continue break Keterangan 5 Javapemula:93 5-6 Javapemula:64 7 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) Dasar Pemrograman GUI Pada Java Dasar Pemrograman Akses Data pada Java Review Review Evaluasi Akhir Ujian/Tugas Referensi 1. 2. 3. 4. Dasar Pemrograman Java, Abdul Kadir, Andi 2004 Tuntunan Pemrograman Java Jilid 1-3, Rangsang Purnama, Prestasi Pustaka 2003 Semua Bisa Menjadi Programmer Java, Yuniar Supardi, Elex Media komputindo 2010 Membuat Aplikasi Windows Multiplatform dengan Java GUI, Ridwan Sanjaya, Elex Media Komputindo 2003 5. Membuat Aplikasi Profesional dengan Java, Wahana Komputer 2005 Topik Lain Java Standard Edition (Lanjutan) Multithreading Networking Graphics & Game Java Enterprise Edition (Java Web) JSP Servlet Java Mobile Edition Java FX 2 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 3 1. SEJARAH BAHASA PEMROGRAMAN JAVA Kelahiran bahasa Java dimulai tahun 1991. Bahasa Java merupakan proyek penelitian Sun Microsystems yang diberi nama kode Green, dimotori oleh Patrick Naughton, Mike Sheridan, James Gosling, Chris Warth dan Ed Frank, beserta beberapa orang pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang. Proyek ini bertujuan membangun sebuah sistem yang memungkinkan komputer berperan dalam peralatan rumah tangga. Fokus pertama proyek adalah pada TV kabel yang disebut set-top box. Idenya adalah agar para pengguna televisi dapat memesan film, membeli barang dan sebagainya melalui televisi. Dikarenakan peralatan-peralatan ini menggunakan konsumsi daya dan memory yang kecil/rendah, maka diperlukan sebuah sistem operasi dengan bahasa prog ram berukuran sangat kecil. Selain itu setiap vendor dapat menggunakan CPUs (Central Processing Unit) yang berbeda, maka bahasa tersebut harus bersifat multiplatfrom serta tidak terikat hanya pada satu arsitektur (Architecture Neutral) sehingga diperlukan sebuah Virtual Machine yang berasal dari model implementasi bahasa Pascal yang pernah dicoba sebelumnya oleh Niclaus Wirth, tetapi karena insinyur-insinyur Sun berlatar belakang Unix maka mereka mendasari bahasa pemograman mereka dengan C++. Produk yang dihasilkan pada tahun 1992 adalah *7 (seven star). Akan tetapi James Gosling (salah seorang anggota tim proyek) merasa tidak puas dengan bahasa C++. Akhirnya Ia membuat sendiri bahasa pemrograman baru yang diberi nama Oak. Nama tersebut diambil dari nama pohon yang terlihat dari jendela kantornya. Oak dibuat berdasarkan pada syntax bahasa C++. Namun Oak lebih sederhana dari C++, lebih stabil dan lebih mendukung network-programming. Selain itu Oak dibuat murni objectoriented. Bahasa Oak dibuat sebagai bahasa yang tidak terikat pada satu platform (crossplatform atau multi-platform). Tahun 1994, proyek Green diperbesar oleh Sun menjadi proyek FirstPerson. Tapi proyek tersebut gagal akibat penolakan pasar terhadap ide TV interaktif. Pada saat itu Internet memulai sejarah baru dengan www (world wide web), browser GUI pertama muncul tahun 1993 yaitu Mosaic buatan NCSA (National Center for Supercomputing Applications). Sun merasa bahasa Oak yang multi-platform serta ditujukan untuk pemrograman interaktif dan distributed sangat cocok untuk dunia Web. Tahun 1995, nama Oak diganti dengan nama Java karena ada produk lain yang telah mematenkan nama tersebut. Nama ini diambil dari nama jenis kopi. Bersamaan dengan lahirnya nama Java ini, Sun juga mengganti nama web-browser mereka menjadi HotJava (semula bernama WebRunner tahun 1994). Sun kemudian mengumumkan bahasa Java sebagai bahasa yang mampu menjalankan Web secara interaktif dan aman (menjalankan kode program dengan fitur applet) pada 25 mei 1995 dan sejak saat itu browser java memberikan lisensinya kepada browser lain untuk dapat menjalankan applet. Akhir tahun 1995, IBM dan Microsoft memutuskan untuk membeli lisensi Java. Pada tahun 1996 dikeluarkan versi pertama java 1.2 dengan slogamnya “write once, run anywhere (WORA)”. 2. KELEBIHAN JAVA Kelebihan Java, antara lain: a. Multiplatform, dapat dijalankan di beberapa platform/ sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja (WORA). Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi menjadi bahasa mesin (bytecode), kemudian hasilnya dapat dijalankan di atas beberapa platform tanpa perlu perubahan. Teknologi Java Virtual Machine (JVM), sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata, menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 4 b. OOP (Object Oriented Programming - Pemrogram Berorientasi Objek). c. Perpustakaan kelas yang lengkap, Java terkenal dengan kelengkapan perpustakaan (library) yaitu kumpulan program program yang disertakan dalam pemrograman java yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java. d. Pengumpulan sampah otomatis (Garbage Collection), memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas). e. MultiThread. Kemampuan untuk melakukan beberapa proses sekaligus pada saat bersamaan. Thread pada Java memiliki kemampuan memanfaatkan teknologi multiprocessor. f. Kapasitas Java pada lingkungan web dibanding beberapa bahasa lainnya adalah sebagai berikut: g. Portabel yaitu Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang. h. Code Security terimplementasi pada Java melalui penggunaan Java Runtime Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code. Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter, proses ini menyediakan pengamanan dengan memisahkan kelas-kelas yang berasal dari local disk dengan yang diambil dari jaringan sehingga membatasi aplikasi Trojan karena kelas-kelas yang berasal dari local disk yang dimuat terlebih dahulu. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan-aturan dasar bahasa Java. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan akses program terhadap sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing. Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi. i. Java juga menyediakan beragam teknik pengamanan lain: Bahasa dirancang untuk mempersulit eksekusi kode perusak dengan meniadakan pointer yang merupakan hal yang luar biasa untuk optimasi dan pembuatan program yang efisien melalui pengaksesan tak diotorisasi namun dapat menjadi petaka oleh pemrogram jahat. Applet java diamankan dengan tidak diperbolehkan melakukan open, read atau write terhadap berkas secara sembarangan. Karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai permintaan keterangan username dan password. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 5 3. EDISI & PLATFORM JAVA Bahasa pemrograman Java terdiri dari beberapa edisi, yaitu: - Java Standard Edition (SE) - Java Enterprise Edition (EE) - Java Micro Edition (ME) - Java Card (digunakan pada SmartCard, SIMCard dan sejenisnya) - Java FX (rich Internet applications yang dapat berjalan di berbagai perangkat yang saling terhubung, desktop, browser, ponsel, TV set-top boxes, gaming consoles, Bluray players dan lainnya. Diagram platform java (Standard Edition 7 - http://docs.oracle.com/javase/7/docs/) Spesifikasi Java API (Standard Edition 7 - http://docs.oracle.com/javase/7/docs/api/) java.applet Provides the classes necessary to create an applet and the classes an applet uses to communicate with its applet context. java.awt Contains all of the classes for creating user interfaces and for painting graphics and images. java.awt.color Provides classes for color spaces. java.awt.datatransfer Provides interfaces and classes for transferring data between and within applications. java.awt.dnd Drag and Drop is a direct manipulation gesture found in many Graphical User Interface systems that provides a mechanism to transfer information between two entities logically associated with presentation elements in the GUI. java.awt.event Provides interfaces and classes for dealing with different types of events fired by AWT components. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 6 java.awt.font Provides classes and interface relating to fonts. java.awt.geom Provides the Java 2D classes for defining and performing operations on objects related to two-dimensional geometry. java.awt.im Provides classes and interfaces for the input method framework. java.awt.im.spi Provides interfaces that enable the development of input methods that can be used with any Java runtime environment. java.awt.image Provides classes for creating and modifying images. java.awt.image.renderable Provides classes and interfaces for producing rendering-independent images. java.awt.print Provides classes and interfaces for a general printing API. java.beans Contains classes related to developing beans -- components based on the JavaBeans™ architecture. java.beans.beancontext Provides classes and interfaces relating to bean context. java.io Provides for system input and output through data streams, serialization and the file system. java.lang Provides classes that are fundamental to the design of the Java programming language. java.lang.annotation Provides library support for the Java programming language annotation facility. java.lang.instrument Provides services that allow Java programming language agents to instrument programs running on the JVM. java.lang.invoke The java.lang.invoke package contains dynamic language support provided directly by the Java core class libraries and virtual machine. java.lang.management Provides the management interfaces for monitoring and management of the Java virtual machine and other components in the Java runtime. java.lang.ref Provides reference-object classes, which support a limited degree of interaction with the garbage collector. java.lang.reflect Provides classes and interfaces for obtaining reflective information about classes and objects. java.math Provides classes for performing arbitrary-precision integer arithmetic (BigInteger) and arbitrary-precision decimal arithmetic (BigDecimal). java.net Provides the classes for implementing networking applications. java.nio Defines buffers, which are containers for data, and provides an overview of the other NIO packages. java.nio.channels Defines channels, which represent connections to entities that are capable of performing I/O operations, such as files and sockets; defines selectors, for multiplexed, non-blocking I/O operations. java.nio.channels.spi Service-provider classes for the java.nio.channels package. java.nio.charset Defines charsets, decoders, and encoders, for translating between bytes and Unicode characters. java.nio.charset.spi Service-provider classes for the java.nio.charset package. java.nio.file Defines interfaces and classes for the Java virtual machine to access files, file attributes, and file systems. java.nio.file.attribute Interfaces and classes providing access to file and file system attributes. java.nio.file.spi Service-provider classes for the java.nio.file package. java.rmi Provides the RMI package. java.rmi.activation Provides support for RMI Object Activation. java.rmi.dgc Provides classes and interface for RMI distributed garbage-collection (DGC). java.rmi.registry Provides a class and two interfaces for the RMI registry. java.rmi.server Provides classes and interfaces for supporting the server side of RMI. java.security Provides the classes and interfaces for the security framework. java.security.acl The classes and interfaces in this package have been superseded by classes in the java.security package. java.security.cert Provides classes and interfaces for parsing and managing certificates, certificate revocation lists (CRLs), and certification paths. java.security.interfaces Provides interfaces for generating RSA (Rivest, Shamir and Adleman AsymmetricCipher algorithm) keys as defined in the RSA Laboratory Technical Note PKCS#1, and DSA (Digital Signature Algorithm) keys as defined in NIST's FIPS-186. java.security.spec Provides classes and interfaces for key specifications and algorithm parameter specifications. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 7 java.sql Provides the API for accessing and processing data stored in a data source (usually a relational database) using the JavaTM programming language. java.text Provides classes and interfaces for handling text, dates, numbers, and messages in a manner independent of natural languages. java.text.spi Service provider classes for the classes in the java.text package. java.util Contains the collections framework, legacy collection classes, event model, date and time facilities, internationalization, and miscellaneous utility classes (a string tokenizer, a random-number generator, and a bit array). java.util.concurrent Utility classes commonly useful in concurrent programming. java.util.concurrent.atomic A small toolkit of classes that support lock-free thread-safe programming on single variables. java.util.concurrent.locks Interfaces and classes providing a framework for locking and waiting for conditions that is distinct from built-in synchronization and monitors. java.util.jar Provides classes for reading and writing the JAR (Java ARchive) file format, which is based on the standard ZIP file format with an optional manifest file. java.util.logging Provides the classes and interfaces of the JavaTM 2 platform's core logging facilities. java.util.prefs This package allows applications to store and retrieve user and system preference and configuration data. java.util.regex Classes for matching character sequences against patterns specified by regular expressions. java.util.spi Service provider classes for the classes in the java.util package. java.util.zip Provides classes for reading and writing the standard ZIP and GZIP file formats. javax.accessibility Defines a contract between user-interface components and an assistive technology that provides access to those components. javax.activation javax.activity Contains Activity service related exceptions thrown by the ORB machinery during unmarshalling. javax.annotation javax.annotation.processing Facilities for declaring annotation processors and for allowing annotation processors to communicate with an annotation processing tool environment. javax.crypto Provides the classes and interfaces for cryptographic operations. javax.crypto.interfaces Provides interfaces for Diffie-Hellman keys as defined in RSA Laboratories' PKCS #3. javax.crypto.spec Provides classes and interfaces for key specifications and algorithm parameter specifications. javax.imageio The main package of the Java Image I/O API. javax.imageio.event A package of the Java Image I/O API dealing with synchronous notification of events during the reading and writing of images. javax.imageio.metadata A package of the Java Image I/O API dealing with reading and writing metadata. javax.imageio.plugins.bmp Package containing the public classes used by the built-in BMP plug-in. javax.imageio.plugins.jpeg Classes supporting the built-in JPEG plug-in. javax.imageio.spi A package of the Java Image I/O API containing the plug-in interfaces for readers, writers, transcoders, and streams, and a runtime registry. javax.imageio.stream A package of the Java Image I/O API dealing with low-level I/O from files and streams. javax.jws javax.jws.soap javax.lang.model Classes and hierarchies of packages used to model the Java programming language. javax.lang.model.element Interfaces used to model elements of the Java programming language. javax.lang.model.type Interfaces used to model Java programming language types. javax.lang.model.util Utilities to assist in the processing of program elements and types. javax.management Provides the core classes for the Java Management Extensions. javax.management.loading Provides the classes which implement advanced dynamic loading. javax.management.modelmbean Provides the definition of the ModelMBean classes. javax.management.monitor Provides the definition of the monitor classes. javax.management.openmbean Provides the open data types and Open MBean descriptor classes. javax.management.relation Provides the definition of the Relation Service. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) javax.management.remote Interfaces for remote access to JMX MBean servers. javax.management.remote.rmi The RMI connector is a connector for the JMX Remote API that uses RMI to transmit client requests to a remote MBean server. javax.management.timer Provides the definition of the Timer MBean. javax.naming Provides the classes and interfaces for accessing naming services. javax.naming.directory Extends the javax.naming package to provide functionality for accessing directory services. javax.naming.event Provides support for event notification when accessing naming and directory services. javax.naming.ldap Provides support for LDAPv3 extended operations and controls. 8 javax.naming.spi javax.net Provides classes for networking applications. javax.net.ssl Provides classes for the secure socket package. javax.print Provides the principal classes and interfaces for the JavaTM Print Service API. javax.print.attribute Provides classes and interfaces that describe the types of JavaTM Print Service attributes and how they can be collected into attribute sets. javax.print.attribute.standard Package javax.print.attribute.standard contains classes for specific printing attributes. javax.print.event Package javax.print.event contains event classes and listener interfaces. javax.rmi Contains user APIs for RMI-IIOP. javax.rmi.CORBA Contains portability APIs for RMI-IIOP. javax.rmi.ssl Provides implementations of RMIClientSocketFactory and RMIServerSocketFactory over the Secure Sockets Layer (SSL) or Transport Layer Security (TLS) protocols. javax.script The scripting API consists of interfaces and classes that define Java TM Scripting Engines and provides a framework for their use in Java applications. javax.security.auth This package provides a framework for authentication and authorization. javax.security.auth.callback This package provides the classes necessary for services to interact with applications in order to retrieve information (authentication data including usernames or passwords, for example) or to display information (error and warning messages, for example). javax.security.auth.kerberos This package contains utility classes related to the Kerberos network authentication protocol. javax.security.auth.login This package provides a pluggable authentication framework. javax.security.auth.spi This package provides the interface to be used for implementing pluggable authentication modules. javax.security.auth.x500 This package contains the classes that should be used to store X500 Principal and X500 Private Crendentials in a Subject. javax.security.cert Provides classes for public key certificates. javax.security.sasl Contains class and interfaces for supporting SASL. javax.sound.midi Provides interfaces and classes for I/O, sequencing, and synthesis of MIDI (Musical Instrument Digital Interface) data. javax.sound.midi.spi Supplies interfaces for service providers to implement when offering new MIDI devices, MIDI file readers and writers, or sound bank readers. javax.sound.sampled Provides interfaces and classes for capture, processing, and playback of sampled audio data. javax.sound.sampled.spi Supplies abstract classes for service providers to subclass when offering new audio devices, sound file readers and writers, or audio format converters. javax.sql Provides the API for server side data source access and processing from the JavaTM programming language. javax.sql.rowset Standard interfaces and base classes for JDBC RowSet implementations. javax.sql.rowset.serial Provides utility classes to allow serializable mappings between SQL types and data types in the Java programming language. javax.sql.rowset.spi The standard classes and interfaces that a third party vendor has to use in its implementation of a synchronization provider. javax.swing Provides a set of "lightweight" (all-Java language) components that, to the maximum degree possible, work the same on all platforms. javax.swing.border Provides classes and interface for drawing specialized borders around a Swing component. javax.swing.colorchooser Contains classes and interfaces used by the JColorChooser component. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 9 javax.swing.event Provides for events fired by Swing components. javax.swing.filechooser Contains classes and interfaces used by the JFileChooser component. javax.swing.plaf Provides one interface and many abstract classes that Swing uses to provide its pluggable look-and-feel capabilities. javax.swing.plaf.basic Provides user interface objects built according to the Basic look and feel. javax.swing.plaf.metal Provides user interface objects built according to the Java look and feel (once codenamed Metal), which is the default look and feel. javax.swing.plaf.multi Provides user interface objects that combine two or more look and feels. javax.swing.plaf.nimbus Provides user interface objects built according to the cross-platform Nimbus look and feel. javax.swing.plaf.synth Synth is a skinnable look and feel in which all painting is delegated. javax.swing.table Provides classes and interfaces for dealing with javax.swing.JTable. javax.swing.text Provides classes and interfaces that deal with editable and noneditable text components. javax.swing.text.html Provides the class HTMLEditorKit and supporting classes for creating HTML text editors. javax.swing.text.html.parser Provides the default HTML parser, along with support classes. javax.swing.text.rtf Provides a class (RTFEditorKit) for creating Rich-Text-Format text editors. javax.swing.tree Provides classes and interfaces for dealing with javax.swing.JTree. javax.swing.undo Allows developers to provide support for undo/redo in applications such as text editors. javax.tools Provides interfaces for tools which can be invoked from a program, for example, compilers. javax.transaction Contains three exceptions thrown by the ORB machinery during unmarshalling. javax.transaction.xa Provides the API that defines the contract between the transaction manager and the resource manager, which allows the transaction manager to enlist and delist resource objects (supplied by the resource manager driver) in JTA transactions. javax.xml javax.xml.bind Provides a runtime binding framework for client applications including unmarshalling, marshalling, and validation capabilities. javax.xml.bind.annotation Defines annotations for customizing Java program elements to XML Schema mapping. javax.xml.bind.annotation.adapters XmlAdapter and its spec-defined sub-classes to allow arbitrary Java classes to be used with JAXB. javax.xml.bind.attachment This package is implemented by a MIME-based package processor that enables the interpretation and creation of optimized binary data within an MIME-based package format. javax.xml.bind.helpers JAXB Provider Use Only: Provides partial default implementations for some of the javax.xml.bind interfaces. javax.xml.bind.util Useful client utility classes. javax.xml.crypto Common classes for XML cryptography. javax.xml.crypto.dom DOM-specific classes for the javax.xml.crypto package. javax.xml.crypto.dsig Classes for generating and validating XML digital signatures. javax.xml.crypto.dsig.dom DOM-specific classes for the javax.xml.crypto.dsig package. javax.xml.crypto.dsig.keyinfo Classes for parsing and processing KeyInfo elements and structures. javax.xml.crypto.dsig.spec Parameter classes for XML digital signatures. javax.xml.datatype XML/Java Type Mappings. javax.xml.namespace XML Namespace processing. javax.xml.parsers Provides classes allowing the processing of XML documents. javax.xml.soap Provides the API for creating and building SOAP messages. javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform This package defines the generic APIs for processing transformation instructions, and performing a transformation from source to result. javax.xml.transform.dom This package implements DOM-specific transformation APIs. javax.xml.transform.sax This package implements SAX2-specific transformation APIs. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 10 javax.xml.transform.stax Provides for StAX-specific transformation APIs. javax.xml.transform.stream This package implements stream- and URI- specific transformation APIs. javax.xml.validation This package provides an API for validation of XML documents. javax.xml.ws This package contains the core JAX-WS APIs. javax.xml.ws.handler This package defines APIs for message handlers. javax.xml.ws.handler.soap This package defines APIs for SOAP message handlers. javax.xml.ws.http This package defines APIs specific to the HTTP binding. javax.xml.ws.soap This package defines APIs specific to the SOAP binding. javax.xml.ws.spi This package defines SPIs for JAX-WS. javax.xml.ws.spi.http Provides HTTP SPI that is used for portable deployment of JAX-WS web services in containers(for e.g. javax.xml.ws.wsaddressing This package defines APIs related to WS-Addressing. javax.xml.xpath This package provides an object-model neutral API for the evaluation of XPath expressions and access to the evaluation environment. org.ietf.jgss This package presents a framework that allows application developers to make use of security services like authentication, data integrity and data confidentiality from a variety of underlying security mechanisms like Kerberos, using a unified API. org.omg.CORBA Provides the mapping of the OMG CORBA APIs to the JavaTM programming language, including the class ORB, which is implemented so that a programmer can use it as a fully-functional Object Request Broker (ORB). org.omg.CORBA_2_3 The CORBA_2_3 package defines additions to existing CORBA interfaces in the Java[tm] Standard Edition 6. These changes occurred in recent revisions to the CORBA API defined by the OMG. The new methods were added to interfaces derived from the corresponding interfaces in the CORBA package. This provides backward compatibility and avoids breaking the JCK tests. org.omg.CORBA_2_3.portable Provides methods for the input and output of value types, and contains other updates to the org/omg/CORBA/portable package. org.omg.CORBA.DynAnyPackage Provides the exceptions used with the DynAny interface (InvalidValue, Invalid, InvalidSeq, and TypeMismatch). org.omg.CORBA.ORBPackage Provides the exception InvalidName, which is thrown by the method ORB.resolve_initial_references and the exception InconsistentTypeCode, which is thrown by the Dynamic Any creation methods in the ORB class. org.omg.CORBA.portable Provides a portability layer, that is, a set of ORB APIs that makes it possible for code generated by one vendor to run on another vendor's ORB. org.omg.CORBA.TypeCodePackage Provides the user-defined exceptions BadKind and Bounds, which are thrown by methods in in the class TypeCode. org.omg.CosNaming Provides a naming service for Java IDL. org.omg.CosNaming.NamingContextExtPackage This package contains the following classes, which are used in org.omg.CosNaming.NamingContextExt: org.omg.CosNaming.NamingContextPackage This package contains Exception classes for the org.omg.CosNaming package. org.omg.Dynamic This package contains the Dynamic module specified in the OMG Portable Interceptor specification, http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06, section 21.9. org.omg.DynamicAny Provides classes and interfaces that enable traversal of the data value associated with an any at runtime, and extraction of the primitive constituents of the data value. org.omg.DynamicAny.DynAnyFactoryPackage This package contains classes and exceptions from the DynAnyFactory interface of the DynamicAny module specified in the OMG The Common Object Request Broker: Architecture and Specification, http://cgi.omg.org/cgi-bin/doc?formal/99-10-07, section 9.2.2. org.omg.DynamicAny.DynAnyPackage This package contains classes and exceptions from the DynAny interface of the DynamicAny module specified in the OMG The Common Object Request Broker: Architecture and Specification, http://cgi.omg.org/cgi-bin/doc?formal/99-10-07, section 9.2. org.omg.IOP This package contains the IOP module specified in the OMG document The Common Object Request Broker: Architecture and Specification, http://cgi.omg.org/cgibin/doc?formal/99-10-07, section 13.6. org.omg.IOP.CodecFactoryPackage This package contains the exceptions specified in the IOP::CodeFactory interface (as part of the Portable Interceptors spec). org.omg.IOP.CodecPackage This package is generated from the IOP::Codec IDL interface definition. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 11 org.omg.Messaging This package contains the Messaging module specified in the OMG CORBA Messaging specification, http://cgi.omg.org/cgi-bin/doc?formal/99-10-07. org.omg.PortableInterceptor Provides a mechanism to register ORB hooks through which ORB services can intercept the normal flow of execution of the ORB. This package contains the exceptions and typedefs from the ORBInitInfo local org.omg.PortableInterceptor.ORBInitInfoPackage interface of the PortableInterceptor module specified in the OMG Portable Interceptor specification, http://cgi.omg.org/cgi-bin/doc?ptc/2000-08-06, section 21.7.2. org.omg.PortableServer Provides classes and interfaces for making the server side of your applications portable across multivendor ORBs. org.omg.PortableServer.CurrentPackage Provides method implementations with access to the identity of the object on which the method was invoked. org.omg.PortableServer.POAManagerPackage Encapsulates the processing state of the POAs it is associated with. org.omg.PortableServer.POAPackage Allows programmers to construct object implementations that are portable between different ORB products. org.omg.PortableServer.portable Provides classes and interfaces for making the server side of your applications portable across multivendor ORBs. org.omg.PortableServer.ServantLocatorPackage Provides classes and interfaces for locating the servant. org.omg.SendingContext Provides support for the marshalling of value types. org.omg.stub.java.rmi Contains RMI-IIOP Stubs for the Remote types that occur in the java.rmi package. org.w3c.dom Provides the interfaces for the Document Object Model (DOM) which is a component API of the Java API for XML Processing. org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax This package provides the core SAX APIs. org.xml.sax.ext This package contains interfaces to SAX2 facilities that conformant SAX drivers won't necessarily support. org.xml.sax.helpers 4. INSTALASI JAVA DAN SETTING Java Standard Edition dan edisi lainnya beserta fitur-fitur pengembangannya dapat didownload secara gratis dari: http://www.oracle.com/technetwork/java/javase/downloads. Telah tersedia dalam bentuk paket instalasi yaitu Java SE Development Kit (JDK) yang terdiri dari: Development Tools (/bin), Runtime Environment (JRE), addtional libraries, Java DB, C Header files, source code dan Java FX tools. Paket instalasi JDK tersebut juga telah disediakan untuk beberapa jenis Sistem Operasi seperti: Linux, Unix Solaris, Windows dan Mac OS. Setelah proses instalasi JSE selesai, maka perlu dilakukan beberpa pengaturan, yaitu: a. Path, berfungsi untuk mendaftarkan folder tempat compiler java terletak, tambahkan variabel path tempat folder /bin dari java terletak, misalnya: c:\jdk17.6\bin Untuk menguji setting path, dari Dos Promt ketik sebagai berikut: C:\Documents and Settings\root>java -version java version "1.6.0)10" Java(TM) SE Runtime Environment (build 1.6.0_10-b33) Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing) b. Classpath, berfungsi untuk mendaftarkan folder tempat file-file library java terletak atau file library java tertentu, tambahkan sebuah system variabel bernama: CLASSPATH dan isikan path tempat folder /lib dari java terletak, contoh: .;c:\jdk17.6\lib Perhatikan: pastikan pada deretan path dari classpath diawali dengan .; Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 12 Contoh classpath yang mendaftarkan beberapa file library misalnya: .;c:\jdk17.6\lib\tools.jar; c:\jdk17.6\jre\lib\rt.jar;c:\jdk17.6\lib\ mysql-connectorjava-5.1.8-bin.jar;c:\tomcat6\lib\servlet-api.jar c. Java_Home, berfungsi untuk mendaftarkan folder root tempat java terletak, tambahkan sebuah system variabel bernama: JAVA_HOME dan isikan path tempat folder root dari java terletak, misalnya: c:\jdk17.6 Beberapa file utama java yang terletak pada folder /bin antara lain: - javac.exe mengkompilasi program java (.java) menjadi byte-code (.class) - java.exe interpreter untuk menjalankan program java yang telah dikompilasi (.class) - jdb.exe seperti java.exe dilengkapi dengan fungsi debugger - javap.exe disasembler - javadoc.exe menghasilkan bentuk html dari program java - javah.exe menghasilkan file untuk header c - appletviewer.exe menjalankan aplikasi applet tanpa browser - jconsole.exe memonitor performance java Catatan: Cara mendaftarkan setting system variabel: a. Pada Windows 7 - Klik-kanan pada Computer dan pilih Properties. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 13 - Klik link: Advanced system settings - Klik tombol: Environment Variabels - Lanjut ke (c) dan seterusnya b. Pada Windows XP - Klik-kanan pada MyComputer dan pilih Properties, kemudian pilih tab: Advanced dan klik tombol: Environment Variabels. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) - Lanjut ke (c) dan seterusnya c. Menambah variabel path: klik pada variabel PATH dan klik tombol Edit. Kemudian tambahkan path/ folder tempat compiler java terletak (sisipkan pada deretan paling awal dari path-path yang telah terdaftar): 14 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 15 d. Menambah variabel baru (seperti: CLASSPATH dan JAVA_HOME): klik tombol New. Kemudian tambahkan nama variabel dan pathnya, contoh untuk CLASSPATH contoh untuk JAVA_HOME Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 16 5. PENGENALAN NETBEANS & ECLIPSE Netbeans dan Eclipse adalah salah satu apliaksi editor free yang dapat digunakan untuk mengetik program (source-code) java, terdapat juga editor lainnya seperti: WineHq, jEdit, EditPlus dan lainnya. Netbeans dan Eclipse tidak hanya sekedar editor biasa, melainkan visual editor dan telah terintegrasi dengan setting java ketika di-instal. Netbeans dapat didownload di: https://netbeans.org/downloads menyediakan beberapa paket modul seperti: Java SE, Java EE, C/C++, PHP dan All paket (lengkap). Eclipse dapat didownload di: https://eclipse.org/downloads/ menyediakan beberapa paket modul seperti: Java Developers, Java EE Developers, C/C++ Developers, PHP Developser dan lainnya. Netbeans Menggunakan Netbeans editor (versi 7.2) untuk membangun program aplikasi java dapat dilakukan dengan cara sebagai berikut: 1. Jalankan aplikasi Netbeans Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 17 2. Pada panel “Projects”, klik kanan dan pilih “New Project...” 3. Pada jendela “New Project”, pilih: “Java” pada “Categories” dan pilih “Java Application” pada “Projects” kemudian klik tombol “Next” Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 18 4. Pada jendela “New Java Application”, isilah “Project Name” kemudian klik tombol “Finish” 5. File program java akan dibuat (.java) dan tampilan source code standar otomatis dibuat oleh Netbeans untuk dimodifikasi lebih lanjut, coba tambahkan baris program berikut: Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 6. Untuk menjalankan program java, klik kanan pada pada nama file program java yang ada didalam panel “Projects” lalu pilih “Run File” 7. Hasil program yang dijalankan (bila tidak terdapat error) akan tampil pada jendela “Output” dibagian bawah 19 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 8. Untuk membuat program java berbasis window (GUI), maka buatlah projek baru kemudian pada tahap 4 hapus centang pada checkbox “Create Main Class” 9. Kemudian klik kanan dalam projek yang telah dibuat, lalu pilih “New” kemudian pilih “Jframe Form...” 20 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 10. Pada jendela “New Jframe Form”, isilah “Class Name”, kemudian klik tombol “Finish” 11. File program java frame (.java) akan dibuat beserta sebuah form yang siap untuk didesain lebih lanjut 21 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 22 12. Klik tab “Source” untuk masuk ke mode source, demikian sebaliknya 13. Untuk mengkompilasi projek program java yang dibuat menjadi file paket .jar dapat dilakukan dengan cara: a. Tentukan terlebih dahulu projek yang akan dikompilasi melalui menu “Run” pilih “Set Main Project” b. Lakukan kompilasi melalui menu “Run” pilih “Clean and Build main Project” c. Hasil kompilasi paket program (.jar) akan diletakkan pada folder: dist d. Untuk menjalankan paket program: java –jar hasil.jar Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 23 Eclipse Menggunakan Eclipse editor (versi java-march 4.5.7) untuk membangun program aplikasi java dapat dilakukan dengan cara sebagai berikut: 1. Jalankan aplikasi Eclipse 2. Pada panel “Package Explorer”, klik kanan dan pilih “New” kemudian pilih “Java Project” Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 3. Pada form “New Java Project”, isilah “Project Name” kemudian klik tombol “Finish” 4. Projek akan dibuat pada panel “Package Explorer”, klik kanan pada folder “src” kemudian pilih “New” kemudian pilih “Class” 24 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 25 5. Pada form “New Java Class”, isilah “Package” dan “Name” kemudian centang check “public static void main..” lalu klik tombol “Finish” 6. File program java akan dibuat (.java) dan tampilan source code standar otomatis dibuat oleh Eclipse untuk dimodifikasi lebih lanjut, coba tambahkan baris program berikut: Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 7. Untuk menjalankan program java, klik kanan pada pada nama file program java yang ada didalam panel “Package Explorer” lalu pilih “Run As” lalu “1 Java Application” 8. Hasil program yang dijalankan (bila tidak terdapat error) akan tampil pada jendela “Console” dibagian bawah 26 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 9. Untuk membuat program java berbasis window (GUI), maka buatlah projek baru kemudian klik kanan pada folder “src” kemudian pilih “New” kemudian pilih “Other..” 10. Pada form “New” pilih “Application Window” kemudian klik tombol “Next” 27 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 28 11. Pada form “New Swing Application”, isilah “Package” dan “Name” kemudian klik “Finish” 12. File program java akan dibuat (.java) dan tampilan source code standar otomatis dibuat oleh Eclipse untuk dimodifikasi lebih lanjut Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 29 13. Klik tab “Design” untuk masuk ke mode desain form untuk melakukan desain lebih lanjut 14. Untuk mengkompilasi projek program java yang dibuat menjadi file paket .jar dapat dilakukan dengan cara: a. Klik kanan pada projek yang akan dikompilasi, kemudian pilih “Export” b. Pada form “Export” pilih “Java” lalu “JAR file” kemudian “Next” c. Tentukan folder tempat hasil kompilasi kemudian “Next” dan “Next” d. Tentukan “Main class” kemudian “Finish” e. Hasil kompilasi paket program (.jar) akan diletakkan pada folder tempat hasil kompilasi yang telah ditentukan f. Untuk menjalankan paket program: java –jar hasil.jar Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 30 6. CARA KERJA DAN JENIS APLIKASI JAVA Cara kerja program yang dibuat dengan bahasa java secara umum adalah sebagai berikut: COBA.java public class COBA { public static void main(String args[]) { System.out.println(“Pemgrograman Java”); } } Compiler Java COBA.class 0001011100010100100111111001010 0101001111010010100101010000101 1111110001011010101010101111111 Intepreter Java Intepreter Java Java Virtual Machine (JVM) Java Virtual Machine (JVM) Intepreter Java Java Virtual Machine (JVM) Intepreter Java Java Virtual Machine (JVM) Program Java pada dasarnya dapat dikelompokkan menjadi 3 jenis, yaitu: a. Aplikasi Console, aplikasi java bertampilan teks yang berjalan pada window console b. Aplikasi Frame, aplikasi java bertampilan GUI dan grafik yang berjalan pada sebuah frame/ window c. Aplikasi Applet, aplikasi java bertampilan GUI dan grafik yang berjalan pada aplikasi browser. Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 31 7. STRUKTUR DASAR PROGRAM JAVA Struktur dasar program bahasa java adalah: public class COBA { public static void main(String args[]) { System.out.println(“Pemgrograman Java”); } } Beberapa hal yang perlu diperhatikan dalam menulis program dengan bahasa java antara lain: a. Titik koma pada setiap akhir sebuah syntax/ perintah b. Case sensitive c. Penamaan file (.java) harus sama dengan dengan nama class pada program d. Bila menggunakan folder kumpulan, penamaan folder hasus sama dengan nama packect pada program Menyimpan file dengan ekstension .java, contoh: COBA.java Mengkompilasi program, contoh: javac COBA.java Menjalankan program, contoh: java COBA 8. KOMENTAR Komentar adalah bagian yang tidak akan diproses oleh kompiler, dapat menggunakan beberapa tanda, yaitu: /* teks */ untuk semua baris yang diawali sampai dengan yang diakhiri tanda tersebut /** teks */ khusus digunakan untuk penanda pada proses javadoc // teks untuk satu baris yang diawali dengan tanda tersebut 9. OPERASI MASUKAN & KELUARAN Perintah yang terkait keluaran dapat menggunakan: System.out.print() atau System.out.println(). Untuk membuat program masukan dapat dilakukan dengan beberapa cara: a. Melalui parameter class, contoh: class BACA_PARAMETER { public static void main(String[] args) { System.out.println(args[0]); System.out.println(args[1]); }; }; Menjalankan program dengan penambahan nilai parameter, contoh: BACA_PARAMETER “Program” “Java” b. Membaca input dari user secara console dapat dilakukan dengan beberapa cara: contoh cara manual: //CLASS UNTUK MEMBACA import java.io.*; class baca { public static String str() throws Exception int INP1; String INP2=""; Boolean END=false; while(!END) { INP1 = System.in.read(); { Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) if((char) INP1 == '\r') END=true; else INP2=INP2+(char)INP1; }; return INP2; } } //PROGRAM MEMBACA MENGGUNAKAN CLASS BACA class baca_manual { public static void main(String[] args) throws Exception { String NAMA=null; System.out.print("Masukkan Nama: "); NAMA = baca.str(); System.out.println("\nNama yang dimasukkan: "+NAMA); } } contoh cara menggunakan class DataInputStream: import java.io.*; class baca_stream { public static void main(String[] args) throws Exception { DataInputStream InpStream = new DataInputStream(System.in); String NAMA=null; System.out.print("Masukkan Nama: "); NAMA = InpStream.readLine(); System.out.println("\nNama yang dimasukkan: "+NAMA); } } Contoh cara menggunakan class InputStreamReader import java.io.*; class baca_buffer { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); String NAMA=null; System.out.print("Masukkan Nama: "); NAMA = In.readLine(); System.out.println("\nNama yang dimasukkan: "+NAMA); } } 10. LITERAL Literal adalah rangkaian huruf atau angka yang menyatakan suatu nilai, antara lain: 0 bilangan octal, contoh: 017 artinya bilangan octal 17 atau angka 15 0x bilangan hexadecimal, contoh: 0x17 artinya bilangan hexadecimal 17 atau angka 23 L bilangan long, contoh: 4L \r carriage return \n newline \t tab \b backspace \f formfeed \\ karakter \ 32 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 33 \’ karakter ‘ \” karakter “ true flase null 11. TIPE DATA Tipe data primitif pada java: Jenis Data boolean Deskripsi Hanya bisa berisi benar atau salah Ukuran 1-bit Minimum Maksimum char Karakter Unicode 16-bit byte Bilangan bulat short Bilangan bulat 8-bit -127 128 16-bit -32768 32767 Int long Bilangan bulat 32-bit -2147483648 2147483647 Bilangan bulat 64-bit -9223372036854775808 9223372036854775807 float Bilangan riil 32-bit 1.40129846432481707e-45 3.40282346638528860e+38 double Bilangan riil 64-bit 4.94065645841246544e-324 1.79769313486231570e+308 12. DEKLARASI VARIABEL & KONSTANTA Contoh mendeklarasi variabel pada java: class DEKLARASI { public static void main(String[] args) { double pokok=20000; double sukubunga, bunga; sukubunga = 0.10; bunga = pokok * sukubunga; pokok = pokok + bunga; System.out.print("Bunga yang dihasilkan adalah Rp. "); System.out.println(bunga); System.out.print("Nilai investasi setelah 1 tahun adalah Rp. "); System.out.println(pokok); } } Awali dengan kata final didepan deklarasi untuk mendeklarasi konstanta. 13. OPERATOR ARITMATIKA Simbol Nama operator Contoh penggunaan + Operator penjumlahan n = n + 1; - Operator pengurangan n = n - 1; * Operator perkalian n = n * 1; / Operator pembagian n = n / 1; % Operator sisa pembagian n = n % 1; + Operator penyambung string/ penggabungan n = "saya "+"tidur"; Contoh operasi aritmatika: Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 34 class ARITMATIKA { public static void main(String[] args) { int x = 2; int y = 5; int z = 3; int g = 0; g = x + y; System.out.println("Penjumlahan (x+y) : " + g); g = y - x; System.out.println("Pengurangan (y-x) : " + g); g = x * y; System.out.println("Perkalian (x*y) : " + g); g = y / x; System.out.println("Pembagian (y/x) : " + g); g = z % y; System.out.println("Sisa pembagian (z%x) : " + g); g = x + (y * (z/x)); System.out.println("Hasilnya sekarang : " + g); } } 14. OPERATOR PENAMBAHAN & PENGURANGAN Simbol Nama operator Operasi Contoh + Operator plus menyatakan nilai positif angka = +1; - Operator minus menyatakan nilai negatif, dapat pula digunakan untuk menegatifkan suatu bilangan angka = -1; angka = -angka; // sekarang angka bernilai 1 ++ Operator kenaikan menambah suatu bilangan dengan 1 angka = ++angka; -- Operator penurunan mengurangkan suatu bilangan dengan 1 angka = --angka; ! Operator lawan membalik nilai suatu boolean ok = !true; Contoh operasi penambahan dan pengurangan: class TAMBAH_KURANG { public static void main(String[] args) { int x = 0; int y = 0; y = ++x; System.out.println("Contoh operator pada prefix (awalan)"); System.out.println("---------------------------"); System.out.println("Nilai x baru : " + x); System.out.println("Nilai y = ++x : " + y); x = 0; y = 0; y = x++; System.out.println("\nContoh operator pada sufix (akhiran)"); System.out.println("---------------------------"); System.out.println("Nilai x baru :" + x); System.out.println("Nilai y = x++ :" + y); } } 15. OPERATOR PENUGASAN Operator Contoh Ekspresi setara += x += y; x = (x + y); Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) -= x -= y; x = (x - y); *= x *= y; x = (x * y); /= x /= y; x = (x / y); %= x %= y; x = (x % y); 35 Contoh operasi penugasan: class PENUGASAN { public static void main(String[] args) { int x =5; int y =10; x += y; System.out.println("Hasil penjumlahan : "+ x); x -= y; System.out.println("Hasil pengurangan : "+ x); x *= y; System.out.println("Hasil perkalian : "+ x); x /= y; System.out.println("Hasil pembagian : "+ x); x %= y; System.out.println("Sisa pembagian : "+ x); } } 16. OPERTOR BIT & and untuk biner | or untuk biner ^ exclusive ~ lawan bit << geser kiri bit, contoh: 29<<2 hasilnya 116 >> geser kanan bit >>> geser kanan tak bertanda (bit terkanan diisi 0) 17. OPERATOR TYPE CASTING Operator type casting adalah operator yang dapat digunakan untuk mengubah sementara sebuah tipe data ke bentuk tipe data lainnya tanpa mengubah permanen tipe data sesungguhnya. Beberapa operator type casting yaitu: byte, short, char, int, long, float dan double. Contoh penggunaan type casting: class CASTING { public static void main(String[] args) { int a=65; int b=12; float x=65; float y=12; float z; System.out.println("Karakter dari: "+ a +" adalah: " + (char)a); z=a/b; System.out.println("\n\nPerhitungan dari: z=a/b: "+ z); System.out.println("\nPerhitungan dari: (float) z=a/b: "+ (float)z); z=x/y; Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) System.out.println("\n\nPerhitungan dari: z=x/y: "+ z); System.out.println("\nPerhitungan dari: (int) z=x/y: "+ (int)z); } } 17. OPERASI STRING dan CHARACTER Operasi string merupakan operasi dasar dalam sebuah program yang sering digunakan. Deklarasi objek string dapat dlakukan dengan cara: String var = new String(); atau String var = new String(“text”); atau String var; Beberapa fungsi terkait string, antara lain: a. length(); panjang string b. concat(str2); penggabungan string c. equals(str2); perbandingan menghasilkan true/flase d. compareTo(str2); perbandingan menghasilkan nilai int 1, -1 atau 0 e. replace(char1, char2); mengganti semua char1 menjadi char2 f. replaceAll(char1, char2); sama dengan replace tetapi untuk tipe string g. replaceFirst(char1, char2); sama dengan replace tetapi untuk char pertama h. toLowerCase(); menjadikan huruf kecil i. toUpperCase(); menjadikan huruf besar j. substring(awal, akhir); menambil sub dari string k. charAt(posisi); menambil char dari string l. trim(); menghilangkan spasi diawal & akhir dari string m. String.valueOf(var); mengkonversi dari tipe boolean, char, int, float dan double n. indexOf(char/string); nilai integer posisi dari char atau string o. isEmpty(); memeriksa bila variabel kosong Catatan: Ikutkan library utility pada program, yaitu: import java.util.*; Contoh beberapa fungsi terkait string: Import java.util.*; class STRING { public static void main(String[] args) { String str1,str2,str3; int x = 25; float y = 12; str1="Pemrograman"; str2="Java"; str3=str1+" "+str2; System.out.println(str1+" "+str2); System.out.println(str3); System.out.println("Length : "+str3.length()); System.out.println(str2.replace('a','o')); System.out.println(str3.toLowerCase()); System.out.println(str3.toUpperCase()); System.out.println(str3.substring(5,9)); System.out.println(String.valueOf(x)); System.out.println(String.valueOf(y)); } } 36 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 37 String buffer merupakan penerapan pointer to character sehingga membuat sebuah deklarasi string dapat bersifat dinamis. Deklarasi objek string buffer dapat dlakukan dengan cara: StringBuffer var = new StringBuffer(); atau StringBuffer var = new StringBuffer(ukuran); atau StringBuffer var = new StringBuffer(“text”); Beberapa fungsi terkait string yang terdapat dalam class String, antara lain: a. capacity(); ukuran panjang buffer b. length(); panjang isi string c. setLength(int); mengubah ukuran panjang buffer d. append(text); mengisi atau menambah isi buffer e. toString(); menampilkan isi buffer f. insert(offset, text); menyisip isi buffer pada posisi offset g. delete(awal, akhir); menghapus isi buffer dari posisi awal sampai akhir h. replace(awal, akhir, text); menimpa text ke isi buffer dari posisi awal sampai akhir i. deleteCharAt(offset); menghapus karakter pada posisi offset j. reverse(); membalikkan urutan karakter yang ada dalam buffer Contoh operasi string buffer: Import java.util.*; class STRING_BUFF { public static void main(String[] args) { StringBuffer str1 = new StringBuffer(); System.out.println(str1.capacity()); System.out.println(str1.length()); str1.append("Pemrograman"); str1.append(" Java"); System.out.println(str1.toString()); str1.insert(11," Bahasa"); System.out.println(str1.toString()); str1.delete(11,18); System.out.println(str1.toString()); } } Deklarasi objek character dapat dlakukan dengan cara: Character var = new Character(char); atau char var; Beberapa fungsi terkait string, antara lain: a. Character.IsDigit(char); memeriksa char adalah angka b. Character.IsLetter(char); memeriksa char adalah huruf c. Character.IsLetterOrDigit(char); memeriksa char adalah angka atau huruf d. Character.IsWhitespace(char); memeriksa char adalah spasi e. Character.IsUpperCase(char); memeriksa char adalah huruf besar f. Character.IsLowerCase(char); memeriksa char adalah huruf kecil Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 18. OPERASI MATEMATIK Deklarasi type data untuk operasi matematik seperti Integer, Float, Double dan lainnya dapat dilakukan dengan membuat objek dari class-nya masing-masing. Beberapa fungsi terkait matematik, antara lain: a. intValue(); konversi tipe menjadi integer b. doubleValue(); konversi tipe menjadi double c. Integer.parseInt(string); konversi tipe string menjadi integer d. Integer.toBinaryString(int); konversi tipe integer menjadi biner e. Integer.toOctalString(int); konversi tipe integer menjadi octal f. Integer.toHexString(int); konversi tipe integer menjadi hexadecimal g. Integer.toString(int); konversi tipe integer menjadi string h. Integer.valueOf(string); mengkonversi dari tipe string i. Double.parseDouble(string); konversi tipe string menjadi double j. Double.valueOf(string); mengkonversi dari tipe string k. abs(nilai); nilai absolute l. round(nilai); pembulatan terdekat m. ceil(nilai); pembulatan keatas n. floor(nilai); pembulatan kebawah o. max(nilai1, nilai2); p. min(nilai1, nilai2); q. random(); menghasilkan nilai double 0-1 r. sqrt(nilai); s. exp(nilai); t. log(nilai); Catatan: Ikutkan library utility pada program, yaitu: import java.util.*; Contoh deklarasi tipe untuk operasi matematik: class MATEMATIK { public static void main(String[] args) { Integer p = new Integer(25); Float q = new Float(23.56); Double r = new Double(12.23); System.out.println(p); System.out.println(p.doubleValue()); System.out.println("\n"+q); System.out.println(q.intValue()); System.out.println("\n"+r); System.out.println(r.intValue()); String a = "25"; int x=12; int y; System.out.println(a); y=x+Integer.parseInt(a); System.out.println(y); y=Integer.valueOf(a)/x; System.out.println(y); System.out.println(Double.valueOf(y)); } } 38 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) Contoh operasi matematik: class MATEMATIK_FUNGSI { public static void main(String[] args) { System.out.println(Math.abs(-25)); System.out.println(Math.round(12.25)); System.out.println(Math.ceil(12.25)); System.out.println(Math.floor(12.25)); System.out.println(Math.max(12,25)); System.out.println(Math.min(12,25)); System.out.println(Math.random()); System.out.println(Math.sqrt(25)); } } Untuk memformat tampilan angka dapat menggunakan class NumberFormat Contoh format tampilan angka: import java.text.NumberFormat; class FORMAT_ANGKA { public static void main(String[] args) { NumberFormat NF = NumberFormat.getInstance(); NF.setMinimumIntegerDigits(1); NF.setGroupingUsed(false); NF.setMaximumFractionDigits(2); float x=65; float y=12; float z=x/y; System.out.println("\nNilai dari z: "+ z); System.out.println("\nNilai dari z: "+ NF.format(z)); } } 18. OPERASI WAKTU Deklarasi objek waktu dapat dlakukan dengan cara: Date var = new Date(char); Beberapa fungsi terkait waktu, antara lain: a. getTime(); konversi tipe menjadi integer b. getDate(); konversi tipe menjadi integer c. getMonth(); konversi tipe menjadi integer d. getYear(); konversi tipe menjadi integer e. getDay(); konversi tipe menjadi integer Catatan: Ikutkan library utility pada program, yaitu: import java.util.*; Contoh operasi waktu: import java.util.*; class WAKTU { public static void main(String[] args) { String hr[] = {"Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"}; Date dt = new Date(); System.out.print("Hari ini: "+hr[dt.getDay()]); 39 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) System.out.print(" "+dt.getDate()); System.out.print("-"+dt.getMonth()+1); System.out.println("-"+dt.getYear()); } } 19. SUB PROGRAM Beberapa kelompok perintah yang sering digunakan berulang kali dalam sebuah program dapat dipisahkan kedalam sebuah prosedur atau fungsi yang nantinya dapat dipanggil berulang kali. Contoh mendeklarasi prosedur: class PROSEDUR { public static void TEKS() { System.out.println("Pemrograman Java"); } public static void main(String[] args) { TEKS(); TEKS(); TEKS(); } } Contoh mendeklarasi fungsi: class FUNGSI { Private static int x,y; private static float JUMLAH() { return(x+y); } public static void main(String[] args) { x=12; y=15; System.out.println(JUMLAH()); } } Contoh penggunaan parameter: class PARA01 { private static Double LUAS(int r) { return(Math.PI * r * r); } private static Double KELILING(int r) { return(2 * Math.PI * r); } public static void main(String[] args) { int x=12; System.out.println("Jai-jari: "+x); System.out.println("Luas Lingkaran: "+LUAS(x)); System.out.println("Keliling Lingkaran: "+KELILING(x)); } } 40 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 41 Contoh penggunaan parameter: class PARA02 { private static String LUAS(int r) { Double L = Math.PI * r * r; System.out.println("Luas Lingkaran: "+L); return(""); } private static String KELILING(int r) { Double K = 2 * Math.PI * r; System.out.println("Keliling Lingkaran: "+K); return(""); } public static void main(String[] args) { int x=12; System.out.println("Jai-jari: "+x); LUAS(x); KELILING(x); } } 20. PENANGANAN KESALAHAN Penanganan kesalahan (exception) adalah mekanisme menangkap kesalahan (error) yang kemungkinan dapat terjadi pada saat program sedang dijalankan, terutama pada fungsifungsi yang terkait input-output atau perhitungan matematik. Struktur penanganan kesalahan adalah sebagai berikut: try { } catch (parameter) { }; atau: try { } finally { }; Contoh exception: class KESALAHAN { public static void main(String[] args) { try { System.out.println(5/0); } catch (Throwable e) { System.err.println("Kesalahan: "+e.getMessage()); } } } Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 42 Parameter pada catch dapat terdiri dari beberapa jenis: a. catch (runtimeException var) menangkap kesalahan runtime b. catch (exception var) menangkap kesalahan exception c. catch (Throwable var) menangkap kesalahan lain-lain Penanganan kesalahan dapat dilakukan bertingkat: try { } catch (runtimeException r) { }; catch (Exception e) { }; catch (Throwable t) { }; Untuk menyatakan bahwa penanganan kesalahan akan ditangani dengan langkah tersendiri maka dapat menggunakan klausa throws yang diletakkan dalam baris deklarasi class, contoh: public static void main(String[] args) throws Exception { } atau: public static String str() throws Exception { } Java juga menyediakan mekanisme pelontar kesalahan dengan klausa throw, contoh: import java.io.*; class KESALAHAN2 { public static void main(String[] args) throws Throwable { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); String NAMA=null; System.out.print("Masukkan Nama: "); NAMA = In.readLine(); if (NAMA==null) { throw new Throwable("Nama belum diisi !"); } else { System.out.println("\nNama yang dimasukkan: "+NAMA); } } } Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 21. SELEKSI & KONDISI Java menyediakan 2 perintah untuk menangani seleksi & kondisi, yaitu if dan switch, berikut beberapa format penulisan: If (kondisi) perintah; atau: If (kondisi) perintah; else perintah; atau: If (kondisi) { perintah; perintah; } Else { perintah; perintah; } atau: If (kondisi1) perintah; else If (kondisi2) perintah; else If (kondisi3) perintah; else perintah; atau: switch (ekspresi) { case nilai1: perintah; break; case nilai2: perintah; break; default: perintah; } Operator yang sering digunakan dalam operasi seleksi dan kondisi antara lain: Simbol Nama operator Contoh == Sama dengan b = (1 == 2); != Tidak sama dengan b = (1 != 2); > Lebih besar b = (1 > 2); >= Lebih besar atau sama dengan b = (1 >= 2); < Lebih kecil b = (1 < 2); <= Lebih kecil atau sama dengan b = (1 <= 2); 43 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) && Conditional AND b = true && false; || Conditional OR b = true || false; ! NOT b = !true; ?: Bentuk pendek dari if-then-else Contoh: import java.io.*; class SELEKSI { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); String BACA=null; int ANGKA1, ANGKA2; System.out.print("Masukkan Angka ke-1: "); BACA = In.readLine(); ANGKA1 = Integer.valueOf(BACA); //atau: ANGKA1 = Integer.parseInt(BACA); System.out.print("Masukkan Angka ke-2: "); BACA = In.readLine(); ANGKA2 = Integer.valueOf(BACA); if (ANGKA1>ANGKA2) System.out.println("\nAngka: "+ANGKA1+" > "+ANGKA2); else System.out.println("\nAngka: "+ANGKA2+" > "+ANGKA1); } } Contoh: import java.io.*; class SELEKSI2 { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); String BACA=null; int ANGKA1, ANGKA2; System.out.print("Masukkan Angka ke-1: "); BACA = In.readLine(); ANGKA1 = Integer.valueOf(BACA); System.out.print("Masukkan Angka ke-2: "); BACA = In.readLine(); ANGKA2 = Integer.valueOf(BACA); if (ANGKA1>ANGKA2) System.out.println("\nAngka: "+ANGKA1+" > "+ANGKA2); else if (ANGKA2>ANGKA1) System.out.println("\nAngka: "+ANGKA2+" > "+ANGKA1); else System.out.println("\nAngka: "+ANGKA2+" = "+ANGKA1); } } Contoh: import java.io.*; class SELEKSI3 { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int ANGKA1, ANGKA2, ANGKA3; System.out.print("Masukkan Angka ke-1: "); ANGKA1 = Integer.valueOf(In.readLine()); System.out.print("Masukkan Angka ke-2: "); ANGKA2 = Integer.valueOf(In.readLine()); System.out.print("Masukkan Angka ke-3: "); ANGKA3 = Integer.valueOf(In.readLine()); 44 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) if (ANGKA1 < ANGKA2 && ANGKA1 < ANGKA3) { if (ANGKA2 < ANGKA3) System.out.println(ANGKA1 + " " + ANGKA2 + " " + ANGKA3); else System.out.println(ANGKA1 + " " + ANGKA3 + " " + ANGKA2); } else if (ANGKA2 < ANGKA3) { if (ANGKA1 < ANGKA3) System.out.println(ANGKA2 + " " + ANGKA1 + " " + ANGKA3); else System.out.println(ANGKA2 + " " + ANGKA3 + " " + ANGKA1); } else { if (ANGKA1 < ANGKA2) System.out.println(ANGKA3 + " " + ANGKA1 + " " + ANGKA3); else System.out.println(ANGKA3 + " " + ANGKA2 + " " + ANGKA1); } } } Contoh: import java.io.*; class SELEKSI4 { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int ANGKA; System.out.print("Pilih salah satu angka 1, 2 atau 3: "); ANGKA = Integer.valueOf(In.readLine()); switch(ANGKA){ case 1: System.out.println("Anda memilih angka:" + ANGKA); break; case 2: System.out.println("Anda memilih angka:" + ANGKA); break; case 3: System.out.println("Anda memilih angka:" + ANGKA); break; default: System.out.println("Anda tidak memilih 1, 2 atau 3"); } } } 22. PENGULANGAN Java menyediakan 3 perintah untuk menangani perulangan (looping), yaitu: while, do-while dan for. Berikut beberapa format penulisan: for (inisialisasi; kondisi_true; perubahan) perintah; atau: for (inisialisasi; kondisi_true; perubahan) { perintah; perintah; } atau: 45 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) inisialisasi; while (kondisi_true) { perintah; perubahan; } atau: inisialisasi; do { perintah; perubahan; } while (kondisi_true) Tersedia sebuah perintah yaitu continue untuk melakukan perulangan kembali meskipun masih ada perintah-perintah lain setelah perintah continue tersebut (tidak dikerjakan). Perintah break digunakan untuk memaksa berhenti/keluar dari sebuah perulangan meskipun kondisi masih true. Contoh: import java.io.*; class COBA { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int ANGKA, ULANG; System.out.print("Berapa kali jumlah perulangan: "); ULANG = Integer.valueOf(In.readLine()); ANGKA=1; do { System.out.print(ANGKA+" "); ANGKA++; } while(ANGKA<=ULANG); System.out.println("\n"); } } Contoh: import java.io.*; class COBA { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int ANGKA, ULANG; System.out.print("Berapa kali jumlah perulangan: "); ULANG = Integer.valueOf(In.readLine()); ANGKA=1; while(ANGKA<=ULANG) { System.out.print(ANGKA+" "); ANGKA++; }; System.out.println("\n"); } } 46 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) Contoh: import java.io.*; class COBA { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int ANGKA, ULANG; System.out.print("Berapa kali jumlah perulangan: "); ULANG = Integer.valueOf(In.readLine()); for (ANGKA=1; ANGKA<=ULANG; ANGKA++) { System.out.print(ANGKA+" "); }; System.out.println("\n"); } } 23. ARRAY Mendeklarasi struktur array pada java dapat dilakukan dengan cara: type[] var dan var = new type[index]; atau: type[] var = new type[index]; Contoh: import java.io.*; class COBA { public static void main(String[] args) { String[] KOTA = new String[3]; KOTA[0] = "JAKARTA"; KOTA[1] = "BALI"; KOTA[2] = "MAKASSAR"; for(i=0; i<3; i++) System.out.println(KOTA[i]); } } Contoh: import java.io.*; class COBA { public static void main(String[] args) { String[] KOTA = {"JAKARTA","BALI","MAKASSAR"}; for(i=0; i<3; i++) System.out.println(KOTA[i]); } } 47 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) Contoh: import java.io.*; class COBA { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int i,j; String[] KOTA; System.out.print("Berapa Jumlah Kota ? "); j=Integer.valueOf(In.readLine()); KOTA = new String[j]; for(i=0; i<j; i++) { System.out.print("Kota ke-"+(i+1)+": "); KOTA[i]=In.readLine(); } System.out.print("\nKota yang di-entry adalah: "); for(i=0; i<KOTA.length; i++) { System.out.print(KOTA[i]+" "); } System.out.println(); } } Array multi dimensi pada java dapat dideklarasi dengan cara: type[][] var dan var = new type[index] [index]; atau: type[][] var = new type[index] [index]; Contoh: import java.io.*; class COBA { public static void main(String[] args) throws Exception { BufferedReader In = new BufferedReader(new InputStreamReader(System.in)); int i,j; String[][] KOTA; System.out.print("Berapa Jumlah Data ? "); j=Integer.valueOf(In.readLine()); KOTA = new String[j][2]; for(i=0; i<j; i++) { System.out.println("Data ke-"+(i+1)+": "); System.out.print(" Kota : ");KOTA[i][0]=In.readLine(); System.out.print(" Provinsi: ");KOTA[i][1]=In.readLine(); } System.out.println("\nKota yang di-entry adalah: "); for(i=0; i<KOTA.length; i++) { System.out.println("Kota "+KOTA[i][0]+" di Prov. "+KOTA[i][1]); } System.out.println(); } } 48 Pemrograman Java Dasar – Lucky K, SKom, MMSI (http://Lcpro.Wordpress.com) 24. PEMROGRAMAN ORIENTASI OBJEK - under written - 49