Lecture 5: Java Introduction Java Is Object Oriented Java Is Syntactically Similar to C++ Locations of Java Code Running Java Co

Total Page:16

File Type:pdf, Size:1020Kb

Lecture 5: Java Introduction Java Is Object Oriented Java Is Syntactically Similar to C++ Locations of Java Code Running Java Co Java is object oriented Everything belongs to a class (no global Lecture 5: Java Introduction variables, directly). Main program is a static method in the Advanced Programming class that you run with the java Techniques command. Summer 2003 Lecture slides modified from B. Char Java is syntactically similar to C++ Locations of Java code Built-in types: int, float, double, char. Writing the code. Suppose we have a program that consists of just one class foo Control flow: if-then-else, for, switch. and a main procedure that uses it. Write the Comments: /* .. */ main procedure as a static method in that class. but also // …. (to end of line) The source code must be in a file named Exceptions: throw …; try {} catch{}. foo.java in your current working directory. Compilation. Create the file foo.class via the command javac foo.java Running java code (default) Multi-file definitions To execute the main procedure in If you use several classes foo1, foo2, foo3, … foo.class, give the command create several files in the same directory foo1.java, foo2.java, foo3.java. Compile each java foo one. The compiler will automatically look for other classes in the same directory. Sometimes the compiler can figure out that foo1 requires foo2, so that compiling foo1.java will automatically cause foo2.java to be compiled… but explicit compilation means you can be sure that a file has been compiled or recompiled. 1 Classes assembled at More multi-file definitions compilation, and at run time import bar; Contrast with C or C++ which tends to means that bar.class should be collect all classes needed into a single consulted to find definitions of executable (binary) file, before classes/definitions mentioned in the execution. current file’s programming, such as the class bar. Classpath specified on the Classpath command line command line option for javac or java specifies a list of directories Java will look in other directories, and Java archive files (.jar files) besides the Separated by semi-colons on Windows standard Java system directories and javac -classpath .;E:\ MyPrograms\ jena.jar;E:\ utilities foo1.java (Windows) your current working directory Separated by colons on Solaris java -classpath .:/home/vzaychik/jena.jar:/home/vzaychik/utilities foo1 (Unix) CLASSPATH environment classpath command option vs variable environment variable Software engineering considerations: Value is used if there is no classpath explicit invocation of the classpath on the command option. command line means it’s easier for programmers setenv CLASSPATH .:/pse/:/pse1/corejini: (on to remember or readers to discover what you set Unix) the classpath to. With fewer mistakes or misunderstandings, one has easier to maintain javac example1.java code Can put compilation directions into a make file, Compilation will look in current working will work for anyone regardless of how they set directory /pse and /pse1/corejini directories their classpath variables. This also avoids the for other class definitions. problem of typing in a long classpath repeatedly set CLASSPATH .;E:\PSE\; E:\jini1_0\lib\jini- during development: just type “make asmt1” or whatever. core.jar; (on Windows) 2 Many similarities to C++ in built-in data types, syntax Array example import java.io.*; if, for, while, switch as in C++ /* Example of use of integer arrays*/ Strings a first-class data objects. “+” public class example2{ public static void main(String argv[]) { works with Strings, also coerces int sum = 0; int durations [] = {65, 87, 72, 75}; numbers into strings. for (int counter = 0; counter < durations.length; ++counter) { Arrays are containers. Items can be sum += durations[counter]; }; accessed by subscript. There is also a // Print out overall result. System.out.print("The average of the " + durations.length); length member. System.out.println(" durations is " + sum/durations.length + "."); } } Static methods, static data Output members /home/vzaychik/cs390/>javac example2.java class foo { /home/vzaychik/cs390/>java example2 … The average of the 4 durations is 74. static public int rand(int r) { …}; // static method static public int i; // static data } all objects of that type share a common i and a common version of the method. Methods can be invoked without creating an instance of the class. Example of non-static use of classes: In example3.java In Symphony.java import java.io.*; /* Definition of symphony class */ /* Simple test program for Java (JDK 1.2) */ public class Symphony { public int music, playing, conducting; public class example3{ // by default classes are protected public int rating() { (known to “package”) return music + playing + conducting; public static void main(String argv[]) { } Movie m = new Movie(); } m.script = 9; m.acting = 9; m.directing = 6; Symphony s = new Symphony(); s. music = 7; s.playing = 8; s.conducting = 5; // Print out overall results. System.out.println("The rating of the movie is " + m.rating()); System.out.println("The rating of the symphony is " + s.rating()); } } 3 Compiling and running on In Movie.java Unix /* Definition of Movie class for example 3.*/ % javac Movie.java public class Movie { public int script, acting, directing; % javac Symphony.java public int rating() { return script + acting + directing; % javac example3.java } } % java example3 The rating of the movie is 24 The rating of the symphony is 20 Protection in methods and data members Constructors, protection /* Definition of Movie2 class: two constructors.*/ Can be public, protected, private as in public class Movie2{ private int script, acting, directing; C++. public Movie2() { script = 5; acting = 5; directing = 5; } public Movie2(int s, int a, int d) { script =s; acting = a; directing = d; } public int rating() { return script + acting + directing; } // mutator/access methods for script public void setScript(int s) { script = s; } public int getScript() {return script;}; // mutator/access methods for acting, directing here } } Naming conventions for Naming conventions for classes, variables classes, variables, constants These are rules borrowed from Reiss’ Names of classes: First letter capitalized, e.g. “Software Design” textbook used in class Movie { ….} cs350. Java does not insist on them Names of methods: first letter lower case; but we recommend following coherent multi-word method names capitalized second and successive words: naming rules to reduce software public int getTime(); engineering costs. public void clear(); Names of constants: all caps final int BOARD_SIZE; 4 Inheritance abstract classes to have class B be a subclass of class A, Subclasses used in program, inherit write “public class B extends A {….” methods and fields of superclass. But you can’t create an instance of an abstract class. Abstract class example Interfaces public abstract class Attraction{ public int minutes; public Attraction() {minutes = 75;} Java does not have general multiple public int getMinutes() {return minutes;} public void setMinutes (int d) { minutes = d;} inheritance. It does have limited multiple } inheritance. then class definitions for Movie and Symphony: An interface B is a class that has only class public Movie extends Attraction { ….} declarations. and public class A implements B, C, D {…} public Symphony extends Attraction { …} means that A inherits the methods of B,C, can use Attraction x; x = new Movie() or x = new and D (and can have methods and members Symphony; in a program of its own). Defining an abstract class Defining an interface class public abstract class GeometricObject //Definition starts with “interface” instead of { “class” // class definition goes here as interface FloatingVessel { normal int navigate(Point from, Point to); … // Point is another user-defined class } void dropAnchor(); void weighAnchor(); } 5 Superclass, subclass Packages class A1 implements A {….} package onto.java.entertainment; class B1 extends B {….} public abstract class Attraction {….} class C { public int method1(A a, B b) {…} … public method2(…) { Attraction.java must be in an onto/java/entertainment int result; B1 b1Object; A1 a1Object; subdirectory. If this file is in b1Object = new B1(…); /home/vzaychik/cs390/asmt4/onto/java/entertainment a1Object = new A1(…): The value of the CLASSPATH variable should include the result = method1(a1Object, b1Object); value /home/vzaychik/cs390/asmt4. ….} } Importing classes that belong Package invocation to packages If a class example7 is in the package onto.java.entertainment, import onto.java.chapter7.entertainment; invoke through the full package name // imports entertainment class that java onto.java.entertainment.example7 // belongs to onto.java package import java.io.ObjectInputStream; even if you’re in example7’s directory. // imports ObjectInput class from java.io // package import java.net.*; // imports any class // needed from java.net package What does “final” mean? I/O public final class FinalCircle extends from command line arguments GraphicCircle { … } from the terminal When a class is declared with the final from files modifier, it means that it cannot be extended. It’s a way of declaring constants for a class: final int BUFFERSIZE = 10; 6 I/O stream classes File input example import java.io.*; Compose them together to read/write public class example5 { public static void main(String argv[]) throws IOException { to/from files: text, binary data, other FileInputStream stream = new FileInputStream("input.data"); InputStreamReader reader = new InputStreamReader(stream); kinds. StreamTokenizer tokens = new StreamTokenizer(reader); while(tokens.nextToken()
Recommended publications
  • Artisynth Installation Guide for Macos
    ArtiSynth Installation Guide for MacOS John Lloyd, Sebastian Kazenbroot-Guppy, and Antonio Sánchez Last updated: March, 2018 ArtiSynth Installation Guide for MacOS 2 Contents 1 Introduction 4 2 Prerequisites 4 3 Downloading a Prepacked Release 5 3.1 Downloadingandunpackingthezipfile . ................... 5 4 Cloning from Github 5 4.0.1 Cloningusingthecommandline . ............... 5 4.0.2 CloningusingEclipse . ............. 5 4.1 Downloadingthelibraries. .................. 5 5 Building ArtiSynth 6 5.1 BuildingwithEclipse. .... .... .... ... .... .... .... ................ 6 5.2 Buildingfromthecommandline . ................. 6 6 Running ArtiSynth 6 6.1 Runningfromthecommandline . ................ 6 6.2 Runningfromthefilebrowser . ................ 6 6.3 Commandlinearguments. ............... 7 6.4 RunningusingEclipse .... .... .... ... .... .... .... .. ............... 7 6.5 LoadingandRunningModels . ............... 7 7 Installing External Models and Packages 7 7.1 Downloading ..................................... ............ 8 7.2 Building........................................ ............ 8 7.2.1 BuildingwithEclipse. .............. 8 7.2.2 Buildingfromthecommandline. ............... 8 7.3 Running......................................... ........... 8 7.3.1 Adding external classes using the Eclipse Classpath . ........................ 8 7.3.2 AddingexternalclassesusingEXTCLASSPATH . .................. 8 7.3.3 AddingexternalclassesusingCLASSPATH . .................. 8 8 Updating ArtiSynth 9 8.1 Libraryupdates .................................
    [Show full text]
  • Chapter 9: Java
    ,ch09.6595 Page 159 Friday, March 25, 2005 2:47 PM Chapter 9 CHAPTER 9 Java Many Java developers like Integrated Development Environments (IDEs) such as Eclipse. Given such well-known alternatives as Java IDEs and Ant, readers could well ask why they should even think of using make on Java projects. This chapter explores the value of make in these situations; in particular, it presents a generalized makefile that can be dropped into just about any Java project with minimal modification and carry out all the standard rebuilding tasks. Using make with Java raises several issues and introduces some opportunities. This is primarily due to three factors: the Java compiler, javac, is extremely fast; the stan- dard Java compiler supports the @filename syntax for reading “command-line param- eters” from a file; and if a Java package is specified, the Java language specifies a path to the .class file. Standard Java compilers are very fast. This is primarily due to the way the import directive works. Similar to a #include in C, this directive is used to allow access to externally defined symbols. However, rather than rereading source code, which then needs to be reparsed and analyzed, Java reads the class files directly. Because the symbols in a class file cannot change during the compilation process, the class files are cached by the compiler. In even medium-sized projects, this means the Java com- piler can avoid rereading, parsing, and analyzing literally millions of lines of code compared with C. A more modest performance improvement is due to the bare mini- mum of optimization performed by most Java compilers.
    [Show full text]
  • Migration-Guide.Pdf
    Java Platform, Standard Edition Oracle JDK Migration Guide Release 15 F30923-01 September 2020 Getting Started The purpose of this guide is to help you identify potential issues and give you suggestions on how to proceed as you migrate your existing Java application to JDK 15. The guide also highlights the significant changes and enhancements done in JDK 15. This guide contains the following sections: • Significant Changes in the JDK • Preparing For Migration • Migrating From JDK 8 to Later JDK Releases • Next Steps Note: • Check the Oracle JDK Certified System Configurations for the latest supported platforms and operating system versions. • See Removed APIs, Tools, and Components before you start the migration process. Significant Changes in the JDK Before migrating your application to the latest JDK release, you must understand what the updates and changes are between it and the previous JDK release. If you are migrating from JDK 8, you should also be familiar with the differences between JDK 8 and later releases that are described in Migrating From JDK 8 to Later JDK Releases. See the following sections to learn about some of the significant changes in latest JDK releases. 1 Significant Changes in JDK 15 Release See JDK 15 Release Notes for the complete list of new features and enhancements in JDK 15. The following are some of the updates in Java SE 15 and JDK 15: • Text Blocks, first previewed in Java SE 13, is a permanent feature in this release and can be used without enabling preview features. Text blocks are multiline string literals that avoid the need for most escape sequences, automatically format the string in a predictable way, and give the developer control over the format when desired.
    [Show full text]
  • Java Programming Course Name: Mca – 5Th Semester Course Code: Mca18501cr
    University of Kashmir Department of Computer Science JAVA PROGRAMMING COURSE NAME: MCA – 5TH SEMESTER COURSE CODE: MCA18501CR Teacher Incharge: Dr. Shifaa Basharat Contact: [email protected] 1 University of Kashmir Department of Computer Science PACKAGES: Package in Java is a mechanism to encapsulate a group of classes, sub packages and interfaces. Packages are used for: Re-usability: The classes contained in the packages of another program can be easily reused Name Conflicts: Packages help us to uniquely identify a class, for example, we can have two classes with the name Employee in two different packages, company.sales.Employee and company.marketing.Employee. Controlled Access: Offers access protection such as protected classes, default classes and private class. Protected and default have package level access control. A protected member is accessible by classes in the same package and its subclasses. A default member (without any access specifier) is accessible by classes in the same package only. Data Encapsulation: They provide a way to hide classes, preventing other programs from accessing classes that are meant for internal use only Maintenance: With packages, you can organize your project better and easily locate related classes Thus, package is a container of a group of related classes where some of the classes are accessible and are exposed and others are kept for internal purpose. We can reuse existing classes from the packages as many time as we need it in our program. Package names and directory structure are closely related. For example if a package name is college.staff.csc, then there are three directories, college, staff and csc such that csc is present in staff and staff is present college.
    [Show full text]
  • Java Net Malformedurlexception Unknown Protocol Classpath
    Java Net Malformedurlexception Unknown Protocol Classpath Is Ulrick repayable when Byron overwhelms alphamerically? Lenny usually degauss factually or ditches widthwise when aerated Ulberto flit involuntarily and polygonally. Mattie deputising valiantly while chinked Patin cozing ahold or cybernates visionally. Will follow the classpath protocol if necessary Belong anywhere with friendly rentals larnaca you choose a ba. Below in the esri support app root cause one has been solved the java net malformedurlexception unknown protocol classpath, inspiration and deling with? The group a subject and ensure we noticed that was good for additional terms and current production handler for measuring the java net malformedurlexception unknown protocol classpath at the definition of. How to the pool, which should i document and big, outside the java net malformedurlexception unknown protocol classpath gets understood also giving us in osb and big. Therefore a config location path prefixed with classpath with behave the same overall a plain nuts but a config location such as. If for direct relationship while server was due to java net malformedurlexception unknown protocol classpath entries from. Are you sure you want to allow comments on this post? This version of json file size is on the constant height constraint of your larnaca and object relative online or java net malformedurlexception unknown protocol classpath prefix address for shibboleth. Then I get the following exception: java. Steps to a subscription to use different types of chrysochou bay and feedbacks you sure why this handler is my ehcache in other major cities of java net malformedurlexception unknown protocol classpath. Enter your rental in all amenities and advice of java net malformedurlexception unknown protocol classpath resources via email is with a quiet.
    [Show full text]
  • 1 Compiling Java Programs
    CS 61B P. N. Hilfinger Basic Compilation: javac, gcc, g++ 1 Compiling Java Programs [The discussion in this section applies to Java 1.2 tools from Sun Microsystems. Tools from other manufac- turers and earlier tools from Sun differ in various details.] Programming languages do not exist in a vacuum; any actual programming done in any language one does within a programming environment that comprises the various programs, libraries, editors, debuggers, and other tools needed to actually convert program text into action. The Scheme environment that you used in CS61A was particularly simple. It provided a component called the reader, which read in Scheme-program text from files or command lines and converted it into internal Scheme data structures. Then a component called the interpreter operated on these translated pro- grams or statements, performing the actions they denoted. You probably weren’t much aware of the reader; it doesn’t amount to much because of Scheme’s very simple syntax. Java’s more complex syntax and its static type structure (as discussed in lecture) require that you be a bit more aware of the reader—or compiler, as it is called in the context of Java and most other “production” programming languages. The Java compiler supplied by Sun Microsystems is a program called javac on our systems. You first prepare programs in files (called source files) using any appropriate text editor (Emacs, for example), giving them names that end in ‘.java’. Next you compile them with the java compiler to create new, translated files, called class files, one for each class, with names ending in ‘.class’.
    [Show full text]
  • Getting Started with Jgrasp for Java
    Getting Started with jGRASP for Java Maria Litvin Phillips Academy, Andover, Massachusetts Gary Litvin Skylight Publishing 1. Introduction 2. Downloading and Installing jGRASP 3. Creating a Project and Running “Hello World” 4. Bringing Existing Java Files into jGRASP 5. Command-Line Arguments and User Input 6. Running GUI Applications 7. Workspaces 8. Using Jar Files 9. Creating Jar Files Copyright © 2018 by Maria Litvin, Gary Litvin, and Skylight Publishing All rights reserved. Teachers are authorized to make copies for face-to-face teaching. 2 GETTING STARTED WITH JGRASP FOR JAVA 1. Introduction This document serves as a brief introduction to jGRASP. See more detailed information on their web site. jGRASP was developed by the Department of Computer Science and Software Engineering in the Samuel Ginn College of Engineering at Auburn University. The latest version of jGRASP, as of June 2018, is Release 2.0.4_04. jGRASP is a free download. According to www.jgrasp.org, jGRASP is a lightweight development environment, created specifically to provide automatic generation of software visualizations to improve the comprehensibility of software. jGRASP is implemented in Java, and runs on all platforms with a Java Virtual Machine (Java version 1.5 or higher). jGRASP not only enables the user to edit and run Java programs, it can also produce what its developers call Control Structure Diagrams (CSDs) for Java (and other programming languages). Our primary concern here is how to use jGRASP as an IDE (Integrated Development Environment) for editing and running Java programs. 2. Downloading and Installing jGRASP First make sure the Java Development Kit (JDK) is already installed on your computer.
    [Show full text]
  • CS 361 Concurrent Programming Drexel University Fall 2004 Lecture 2 CS Unix (Sun) Assigned Work for the First Week Schedule
    CS Unix (Sun) CS 361 Concurrent programming • Reference system for programming assignments – Drexel University submitted assignments must work on Solaris. Fall 2004 • Use a makefile to provide directions for compiling and executing programs on tests. Lecture 2 • Get account from https://accounts.cs.drexel.edu/MakeStudentAuthA ©Bruce Char and Vera Zaychik. All rights reserved by the author. ccount or Gaylord Holder Permission is given to students enrolled in CS361 Fall 2004 to ([email protected]). reproduce these notes for their own use. page 1 page 2 Assigned work for the first week Schedule for the next week • Prepare for Java quiz (Tuesday, April 13): • Our class assistants are Ashley Steigerwalt and be able to write class definitions, simple Lecent Teng. We will be setting up office hours Java programs. Be able to answer basic for them shortly. Look for an announcement on the webct webcite. questions about Java programming. • Assignment 1 due Thursday April 8, 11:45pm via webCT. Write a Java program, compile it. Create tests and a test driver for it. Make a makefile and README file for the directory. Tar/gzip it and submit the file to webct. page 3 page 4 Introduction to Java Java is object oriented • This introduction assumes you’ve had • Everything belongs to a class (no global considerable experience programming in variables, directly). another object oriented language, C++ • Main program is a static method in the class (from CS171, 172, etc.). that you run with the java command. page 5 page 6 1 Java is syntactically similar to Locations of Java code C++ • Built-in types: int, float, double, char.
    [Show full text]
  • Getting Started with Java DB Version 10.8
    Getting Started with Java DB Version 10.8 Derby Document build: April 7, 2014, 3:57:42 PM (EDT) Version 10.8 Getting Started with Java DB Contents Copyright................................................................................................................................3 License................................................................................................................................... 4 Relationship between Java DB and Apache Derby...........................................................8 Introduction to Derby........................................................................................................... 9 Deployment options...................................................................................................9 System requirements.................................................................................................9 Product documentation for Java DB....................................................................... 9 Installing and configuring Derby.......................................................................................11 Installing Java DB....................................................................................................11 Setting up your environment..................................................................................11 Choosing a method to run the Derby tools and startup utilities...........................11 Setting the environment variables.......................................................................12
    [Show full text]
  • Modules and Javac
    Modules and javac a.k.a. Making javac module-aware (Not making javac modular; that comes later) Alex Buckley, Jonathan Gibbons Sun Microsystems Module usage at compile-time Scenario ● Compile code that belongs to the HelloWorld module ● The HelloWorld module depends on the Quux module module HelloWorld { requires Quux; } ● javac can easily locate the Quux module and set an internal "magic ClassPath" containing Quux's classes Problem ● Where does HelloWorld's module-info come from? Compiling a single module ● HelloWorld's module-info comes from root of ClassPath: src/classes/com/foo/HelloWorld.java /com/bar/Baz.java /module-info.java ClassPath value shown in blue box ● Familiar ● Reuses existing structure of source trees ● Easy to find complete module content Compiling multiple modules together ● Difficult but necessary – Module A requires module B which requires module A – To start with, all we have is the source of modules A and B ● Given: src/classes/com/foo/HelloWorld.java /com/bar/Baz.java /module-info.java it's impossible to put com/foo/HelloWorld.java in a different module than com/bar/Baz.java ● What to do? Compiling multiple modules together ● If module name is in source, derive a "deep" location from it: src/classes/com/foo/HelloWorld.java module com.foo.app; /module-info module com.foo.app @ .. /com/bar/Baz.java module com.bar.app; /module-info module com.bar.app @ .. ● javac can find a module-info from a given module name ● But hard to find complete module content – Classes in a module could be anywhere under the ClassPath ● Module names overload the package hierarchy – No guarantee that module names will be similar to package names; some directories may hold just a module-info ● Makes the hard case (multiple modules) easy, and the easy case (one module) hard, as me mbership is repeated everywhere Compiling multiple modules together ● If module name is in source, change path semantics to pick the 'right' module-info on the ClassPath? src/classes1/com/foo/HelloWorld module com.foo.app; /module-info module com.foo.app @ .
    [Show full text]
  • Mac OS X for Java™ Geeks by Will Iverson
    [ Team LiB ] • Table of Contents • Index • Reviews • Reader Reviews • Errata Mac OS X for Java™ Geeks By Will Iverson Publisher : O'Reilly Pub Date : April 2003 ISBN : 0-596-00400-1 Pages : 296 Mac OS X for Java Geeks delivers a complete and detailed look at the Mac OS X platform, geared specifically at Java developers. Programmers using the 10.2 (Jaguar) release of Mac OS X, and the new JDK 1.4, have unprecedented new functionality available to them. Whether you are a Java newbie, working your way through Java Swing and classpath issues, or you are a Java guru, comfortable with digital media, reflection, and J2EE, this book will teach you how to get around on Mac OS X. You'll also get the latest information on how to build applications that run seamlessly, and identically, on Windows, Linux, Unix, and the Mac. [ Team LiB ] [ Team LiB ] • Table of Contents • Index • Reviews • Reader Reviews • Errata Mac OS X for Java™ Geeks By Will Iverson Publisher : O'Reilly Pub Date : April 2003 ISBN : 0-596-00400-1 Pages : 296 Copyright Preface Organization Conventions Used in This Book Comments and Questions Acknowledgments Chapter 1. Getting Oriented Section 1.1. All Those Confusing Names Section 1.2. Why Now? Chapter 2. Apple's Java Platform Section 2.1. Apple JVM Basics Section 2.2. Apple's JVM Directory Layout Section 2.3. Additional APIs and Services Section 2.4. Going Forward Chapter 3. Java Tools Section 3.1. Terminal Section 3.2. Code Editors Section 3.3. Jakarta Ant Section 3.4.
    [Show full text]
  • Wolfcrypt Java JCE Provider User Manual Introduction Table of Contents
    wolfCrypt Java JCE Provider User Manual June 23, 2017, version 1.0 Introduction The JCE (Java Cryptography Extension) framework supports the installation of custom Cryptographic Service Providers which can in turn implement a subset of the underlying cryptographic functionality used by the Java Security API. This document describes the details and usage of the wolfCrypt JCE provider. The wolfCrypt JCE provider (wolfJCE) wraps the native wolfCrypt cryptography library for compatibility with the Java Security API. The wolfcrypt-jni package contains both the wolfCrypt JNI wrapper in addition to the JCE provider. The JNI wrapper can be used independently if desired. Table of Contents 1. Requirements 2. Package Design 3. Supported Algorithms and Classes 4. Compilation 5. JAR Code Signing 6. Using a Pre-Signed JAR File 7. Installation 8. Usage I. Requirements A. Java / JDK wolfJCE requires Java to be installed on the host system. There are several JDK variants available to users and developers - including the Oracle JDK and OpenJDK. wolfJCE has currently been tested with OpenJDK, Oracle JDK, and Android. ​ ​ ​ ​ ​ ​ OpenJDK and Android do not require JCE providers to be code signed, whereas the Oracle JDK does. For details on code signing, please see Section 5. For reference, the specific version of OpenJDK which wolfJCE has been tested with is: $ java -version Openjdk version “1.8.0_91” OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1~b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) It has also been tested with Oracle JDK 1.8.0_121, and Android 24. ​ ​ ​ ​ B. JUnit In order to run the unit tests, JUnit is required to be installed on the development system.
    [Show full text]