90 likes | 178 Views
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. browser. applet.
E N D
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 browser applet Java code executed on client computer applet copy downloaded to browser
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 Hello.class Byte code stored on server Source code (must end in .java)
Platform Independence • Stage 2: JVM on client runs “byte code” • Converted to native machine code line-by line and executed on the fly • JVM can be: • Part of browser • Built into NetBeans • Run separately from command line (java Hello.class) • Built directly into chip (mobile devices) Client browser 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 • Can handle as needed (error message displayed, etc.) JVM ArithmeticException thrown; applet int x = 0/0;
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: /* */ //