Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Introduction to Java CSIS 3701: Advanced Object Oriented Programming Java Background Original purpose: web page applets – Executable/dynamic applications running on web page – No longer main use, but affected language design Server Client requested by browser applet browser applet copy downloaded to browser Java code executed on client computer Platform Independence • Java applet must run on any client – Different OS, architecture, etc. different machine code – Cannot compile applet to single executable used by all • Stage 1: Java source code compiled to “byte code” – Code for an abstract “Java virtual machine” (JVM) Hello.java Source code (must end in .java) Hello.class Byte code stored on server Platform Independence • Stage 2: JVM on client runs “byte code” – Converted to native machine code line-by line and executed on the fly Client browser – JVM can be: • Part of browser • Built into NetBeans • Run separately from command line (java Hello.class) • Built directly into chip (mobile devices) JVM applet Line 1 Line 2 Line 3 Line 4 … convert and execute processor Security and Safety • Applet = unknown code running on your computer! – How to prevent malicious applets? • Applets vs. Applications – Applets not allowed access to local files, network, etc. – Application: separate standalone process not run in browser Security and the Sandbox • All Java programs execute in restricted area of memory (the “sandbox”) • No explicit pointers – int *ptr = 100; // outside sandbox – *ptr = 0; // overwrite that memory • Array bounds checking – int A[100]; – A[1000000] = 0; // outside sandbox Safety and Exception Handling • Java programs cannot “crash” to OS • Exceptions caught and handled within JVM – Browser/NetBeans/etc. notified JVM applet int x = 0/0; ArithmeticException thrown; – Can handle as needed (error message displayed, etc.) Tradeoffs • Many tradeoffs in language design – No “best” choices – Different languages make different choices • Portability vs. Speed – “On the fly” interpretation slower than direct execution of machine code • Safety vs. Speed – Array bounds checking – Exception handling Require extra time Basic Java Syntax • Java syntax mostly same as C++ – Java developed by C++ programmers • Examples – Lines/blocks: ; {} – Control structures: if else for while switch… – Operators: = + - * / ++ -- +=… == != > < >= <= && ||… – Comments: /* */ //