umbc cmsc 331 java introduction to java cmsc 331

27
UMBC CMSC 331 Java Introducti Introducti on to JAVA on to JAVA CMSC 331

Upload: irma-barber

Post on 03-Jan-2016

248 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

UMBC CMSC 331 Java

Introduction Introduction to JAVAto JAVA

CMSC 331

Page 2: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

2UMBC CMSC 331 Java

Introduction

• Present the syntax of Java• Introduce the Java API• Demonstrate how to build

– stand-alone Java programs

– Java applets, which run within browsers e.g. Netscape

– Java servlets, which run with a web server

• Example programs tested using Java on Windows and/or Unix

Page 3: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

3UMBC CMSC 331 Java

Why Java?

• It’s the current “hot” language• It’s almost entirely object-oriented• It has a vast library of predefined objects• It’s platform independent (except for J++)

– this makes it great for Web programming

• It’s designed to support Internet applications• It’s secure• It isn’t C++

Page 4: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

4UMBC CMSC 331 Java

Important Features of Java

• Java is a simple language (compared to C++).• Java is a completely object-oriented language.• Java programs can be multi-threaded .• Java programs automatically recycle memory .• Java is a distributed and secure language.• Java is robust (potential errors are often caught).• To make Java portable, so that they run on a

variety of hardware, programs are translated into byte code which is executing by a Java Virtual Machine.

Page 5: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

5UMBC CMSC 331 Java

Historical notes• ~1991, a group at Sun led by James Gosling and Patrick

Naughton designed a language (code-named “Green”) for use in consumer devices such as intelligent TV “set-top” boxes and microwaves.– The design choices reflected the expectation of its use for small,

distributed, and necessarily robust programs on a variety of hardware.– No customer was ever found for this technology.

• ~1993, Green was renamed “Oak” (after a tree outside Gosling’s office) and was used to develop the HotJava browser, which had one unique property: it could dynamically download programs (“applets”) from the Web and run them.

• “Oak” was already taken as a name for a computer language, so Gosling thought of the name Java in a coffee shop.

Page 6: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

6UMBC CMSC 331 Java

What is OOP?

• Object-oriented programming technology can be summarized by three key concepts:– Objects that provide encapsulation of procedures and

data

– Messages that support polymorphism across objects

– Classes that implement inheritance within class hierarchies

• More on this later!

Page 7: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

7UMBC CMSC 331 Java

Applets, Servlets and applications

• An applet is a program designed to be embedded in a Web page and run in a web browser– Applets run in a sandbox with numerous restrictions; for

example, they can’t read files• A servlet is a program which runs in a web server and

typically generates a web page.– Dynamically generated web pages are important and

Java servlets are an alternative to using Basic (ASP), Python, specialized languages (PHP), and vendor specific solutions (e.g., Oracle)

• An application is a conventional program• Java isn't a baby language anymore!

Page 8: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

8UMBC CMSC 331 Java

Building Standalone JAVA Programs (on UNIX)

• Prepare the file myProgram.java using any editor

• Invoke the compiler: javac myProgram.java• This creates myProgram.class• Run the java interpreter: java myProgram

Page 9: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

9UMBC CMSC 331 Java

Java Virtual Machine

• The .class files generated by the compiler are not executable binaries– so Java combines compilation and interpretation

• Instead, they contain “byte-codes” to be executed by the Java Virtual Machine– other languages have done this, e.g. UCSD Pascal, Prolog

• This approach provides platform independence, and greater security

Page 10: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

10UMBC CMSC 331 Java

HelloWorld Applicationpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}

• Note that String is built in• println is a member function for the System.out

class• Every standalone Java application must have a

main method likepublic static void main(String[] args) { }

Page 11: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

11UMBC CMSC 331 Java

HelloWorld Application

=> cd java=> lsHelloWorld.java=> more HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}=> javac HelloWorld.java => java HelloWorldHello World!=>

Page 12: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

12UMBC CMSC 331 Java

Java Applets

• The JAVA virtual machine may be executed under the auspices of some other program, e.g. a Web browser or server.

• Bytecodes can be loaded off the Web, and then executed locally.

• There are classes in Java to support this

Page 13: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

13UMBC CMSC 331 Java

Another simple Java programpublic class Fibonacci { public static void main(String args[ ]) { int first = 1; int second = 1; int next = 2; System.out.print(first + " "); System.out.print(second + " "); while (next < 5000) { next = first + second; System.out.print(next + " "); first = second; second = next; } System.out.println( ); } }

Page 14: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

14UMBC CMSC 331 Java

Still another simple program

/** * This program computes and prints the factorial of a number pass as an argument on the command line. Usage: java Factorial <n> */

public class Factorial { // Define a class

public static void main(String[] args) { // The program starts here if (!(args.length==1)) { // Right number of args? System.out.println("Usage: java Factorial <integer>"); } else { int input = Integer.parseInt(args[0]); // Get the user's input System.out.println(factorial(input)); // Call facorial method, print result } } // The main() method ends here

public static double factorial(int x) { // This method computes x! if (x<0) return 0.0; // if input's bad, return 0 double fact = 1.0; // Begin with an initial value while(x>1) { // Loop until x equals 1 fact = fact*x; // multiply by x each time x = x-1; // and then decrement x } // Jump back to the star of loop return fact; // Return the result } // factorial() ends here} // The class ends here

Page 15: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

15UMBC CMSC 331 Java

Building Applets

• Prepare the file myProgram.java, and compile it to create myProgram.class

• Two ways to run applet program:– Invoke an Applet Viewer (e.g. appletviewer) on

windows or unix and specify the html file– Using a browser (e.g., IE or Netscape), open an

HTML file such as myProgram.html• Browser invokes the Java Virtual Machine

Page 16: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

16UMBC CMSC 331 Java

HelloWorld.java

import java.applet.*;

public class HelloWorld extends Applet { public void init() { System.out.println("Hello, world!"); }}

Page 17: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

17UMBC CMSC 331 Java

hello.html

<title>Hello, World</title><h1>Hello, World</h1><applet code="HelloWorld.class“ width=100 height=140></applet>

Page 18: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

18UMBC CMSC 331 Java

Running the Applet[3:43pm] linuxserver1 => pwd

/home/faculty4/finin/www/java[3:43pm] linuxserver1 => lsHelloWorld.java hello.html[3:43pm] linuxserver1 => javac HelloWorld.java

[3:43pm] linuxserver1 => ls

HelloWorld.class HelloWorld.java hello.html

Page 19: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

19UMBC CMSC 331 Java

But that’s not right!

• The “Hello, World” was displayed by the HTML H1 tag…

• What’s going on?• Applets do their output in a much more

complicated way, using graphics.• When an applet is loaded, by default, the paint

method is called

Page 20: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

20UMBC CMSC 331 Java

Here’s a working versionimport java.applet.*;import java.awt.Graphics;import java.awt.Font;import java.awt.Color;

public class HelloWorldApplet extends Applet { public void init() { System.out.println("Hello, world!"); } Font f = new Font("TimesRoman", Font.BOLD, 12); public void paint(Graphics g) { g.setFont(f); g.setColor(Color.red); g.drawString("Hello Again!", 1, 10); }}

Page 21: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

21UMBC CMSC 331 Java

Java Servlets• Most interesting web applications provide services, which

requires invoking programs.• More and more of the web consists of pages that are not

statically created by human editors, but dynamically generated when needed by programs.

• How do we invoke these programs and what programming languages should we use?– CGI: Common Gateway Interface– Web servers with built in support for servlets written in Python, Lisp,

Tcl, Prolog, Java, Visual Basic, Perl, etc.– ASP (Active Server Pages) is a scripting environment for Microsoft

Internet Information Server in which you can combine HTML, scripts and reusable ActiveX server components to create dynamic web pages.

– ASP begat PHP, JSP, …

• Java turns out to be an excellent language for servlets

Page 22: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

22UMBC CMSC 331 Java

A Servlet’s Job

• Read any data sent by the user– From HTML form, applet, or custom HTTP client

• Look up HTTP request information– Browser capabilities, cookies, requesting host, etc.

• Generate the results– JDBC, RMI, direct computation, legacy app, etc.

• Format the results inside a document– HTML, Excel, etc.

• Set HTTP response parameters– MIME type, cookies, compression, etc.

• Send the document to the client

Page 23: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

23UMBC CMSC 331 Java

Why Build Web Pages Dynamically?

• The Web page is based on data submitted by the user– E.g., results page from search engines and order-confirmation pages

at on-line stores

• The Web page is derived from data that changes frequently– E.g., a weather report or news headlines page

• The Web page uses information from databases or other server-side sources– E.g., an e-commerce site could use a servlet to build a Web page that

lists the current price and availability of each item that is for sale.

Page 24: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

24UMBC CMSC 331 Java

The Advantages of Servlets Over “Traditional” CGI

• Efficient– Threads instead of OS processes, one servlet copy, persistence

• Convenient– Lots of high-level utilities

• Powerful– Sharing data, pooling, persistence

• Portable– Run on virtually all operating systems and servers

• Secure– No shell escapes, no buffer overflows

• Inexpensive

Page 25: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

25UMBC CMSC 331 Java

Simple Servlet Templateimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class ServletTemplate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Use "request" to read incoming HTTP headers// (e.g. cookies) and HTML form data (query data)

// Use "response" to specify the HTTP response status// code and headers (e.g. the content type, cookies).

PrintWriter out = response.getWriter();// Use "out" to send content to browser}

Page 26: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

26UMBC CMSC 331 Java

HelloWorld Servlet

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

out.println("Hello World");

}

}

Page 27: UMBC CMSC 331 Java Introduction to JAVA CMSC 331

27UMBC CMSC 331 Java

Summary• Java is an object-oriented programming language.

• Java features make it ideally suited for writing network-oriented programs.

• Java class definitions and the programs associated with classes are compiled into byte code, facilitating portability.

• Java class definitions and the programs associated with them can be loaded dynamically via a network.

• Java programs can be multithreaded, thereby enabling them to perform many tasks simultaneously.

• Java does automatic memory management, relieving you of tedious programming and frustrating debugging, thereby increasing your productivity.

• Java has syntactical similarities with C and C++.