Introduction to Java A simple objectoriented networksavvy interpreted

Introduction to Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, highperformance, multithreaded, dynamic language. CS 102 -01 Lecture 1. 1 March 29, 2000 CS 102 -01 Lecture 1. 2

What is Java? Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Programming language – Computers are stupid – Step-by-step instructions • Human languages allow for too much ambiguity “The policeman hit the boy with the stick. ” March 29, 2000 CS 102 -01 Lecture 1. 2

Object-oriented Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • A world full of objects – Programming a computer means translating those objects • OO languages make it easy to specify objects and their relationships March 29, 2000 CS 102 -01 Lecture 1. 2

Writing for Networks Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Network “rules of the road” – Protocols: TCP/IP, HTTP & FTP – Understand URLs • Distributed programming – Get other computers to do your work for you – SETI@home March 29, 2000 CS 102 -01 Lecture 1. 2

Interpreted Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Computers don’t speak Java as a native language • Two ways to translate a book – One line at a time for each person who reads it – Do the whole thing at once March 29, 2000 CS 102 -01 Lecture 1. 2

Run Anywhere Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Different strokes for different folks – Should you break eggs at the little end or the big end? – “Look & feel” • Byte-codes are universal • Virtual machines are virtually the same March 29, 2000 CS 102 -01 Lecture 1. 2

My Platform is Better than Yours His Majesty desired I would take some other opportunity of bringing all the rest of his enemy's ships into his ports. And so unmeasurable is the ambition of princes, that he seemed to think of nothing less than reducing the whole empire of Blefuscu into a province, and governing it by a Viceroy; of destroying the Big-Endian exiles, and compelling that people to break the smaller end of their eggs, by which he would remain the sole monarch of the whole world. -- Gulliver’s Travels by Jonathan Swift March 29, 2000 CS 102 -01 Lecture 1. 2

How to Do More than One Thing at a Time Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • One processor means one thing at a time • Switching among many tasks quickly is tough – Lots to track – Use the computer to track it all March 29, 2000 CS 102 -01 Lecture 1. 2

Simple? ! (Maybe Similar) Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Looks like C/C++ – Good for existing programmers – Scheme is simple, but Java isn’t March 29, 2000 CS 102 -01 Lecture 1. 2

Simple = Harder to Hurt Yourself Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Removed some of C/C++’s foot-shooting ability – Useful but difficult to use well: • Memory management • Multiple inheritance • Operator overloading March 29, 2000 CS 102 -01 Lecture 1. 2

“Do You Know Where Your Code Has Been? ” Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Robust means it’s hard to break things • Don’t talk to strangers – How do you know who’s a stranger over a network? – Use a secret code! March 29, 2000 CS 102 -01 Lecture 1. 2

The Dynamic Uno Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Don’t do today what you can put off until tomorrow: Either always carry suntan lotion and an umbrella, OR wait for the sun to come out • “Waiting” is dynamic, or run-time, lookup March 29, 2000 CS 102 -01 Lecture 1. 2

High-Octane Programming Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language. • Java runs more slowly for two reasons – Dynamic means waiting 'til a program runs to do some housekeeping – Interpreted means translating each line every time • Just-in-time compilation March 29, 2000 CS 102 -01 Lecture 1. 2

A First Java Program // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } March 29, 2000 CS 102 -01 Lecture 1. 2

Run It, and Ta-Da! Prints out the message “Welcome to Java Programming!” at a specified location March 29, 2000 CS 102 -01 Lecture 1. 2

Got Something to Say? // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } Comments are key The life you save might be your own. . . March 29, 2000 CS 102 -01 Lecture 1. 2

It Ain’t International Trade // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } import puts your code on a first-name basis with existing class(es) March 29, 2000 CS 102 -01 Lecture 1. 2

Everything’s a Class // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } In Java, writing a program means creating a class “Call me Welcome” -- Moby Java March 29, 2000 CS 102 -01 Lecture 1. 2

Using Someone Else’s Wheel // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } Inheritance in action A “Welcome” is a kind of “Applet” March 29, 2000 CS 102 -01 Lecture 1. 2

Why Bother? “Put away that checkbook! Look at all you get with the amazing new Applet class!” destroy() Called by the browser or applet viewer to inform this applet that it is being reclaimed and that it should destroy any resources that it has allocated. get. Applet. Context() Determines this applet's context, which allows the applet to query and affect the environment in which it runs. get. Applet. Info() Returns information about this applet. get. Audio. Clip(URL) Returns the Audio. Clip object specified by the URL argument. get. Audio. Clip(URL, String) Returns the Audio. Clip object specified by the URL and name arguments. get. Code. Base() Gets the base URL. get. Document. Base() Gets the document URL. get. Image(URL) Returns an Image object that can then be painted on the screen. get. Image(URL, String) Returns an Image object that can then be painted on the screen. get. Locale() Gets the Locale for the applet, if it has been set. get. Parameter(String) Returns the value of the named parameter in the HTML tag. March 29, 2000 CS 102 -01 get. Parameter. Info() Returns information about the parameters than are understood by this applet. init() Called by the browser or applet viewer to inform this applet that it has been loaded into the system. is. Active() Determines if this applet is active. play(URL) Plays the audio clip at the specified absolute URL. play(URL, String) Plays the audio clip given the URL and a specifier that is relative to it. resize(Dimension) Requests that this applet be resized. resize(int, int) Requests that this applet be resized. set. Stub(Applet. Stub) Sets this applet's stub. show. Status(String) Requests that the argument string be displayed in the "status window". start() Called by the browser or applet viewer to inform this applet that it should start its execution. stop() Called by the browser or applet viewer to inform this applet that it should stop its execution. Lecture 1. 2

Applets Inherit Too March 29, 2000 CS 102 -01 Lecture 1. 2

Painting Pretty Pictures // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } When the browser wants to show an applet, it calls paint() March 29, 2000 CS 102 -01 Lecture 1. 2

Is There an Artist in the House? // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } Browser says, “Paint this!” and passes a Graphics object Call it g for short March 29, 2000 CS 102 -01 Lecture 1. 2

Scribbling Strings // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } Graphics objects “know” how to print strings March 29, 2000 CS 102 -01 Lecture 1. 2

Pick a String, Any String // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } If you want to draw a string, you’ve gotta specify: A string (Given in quotes here because we want a literal string) and. . . March 29, 2000 CS 102 -01 Lecture 1. 2

Where do you want it? // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); } } Start in the upper-left hand corner and count 25 (pixels) over, then 25 down March 29, 2000 CS 102 -01 Lecture 1. 2

Graphics Know-It-All // A first program in Java // import Applet class import java. applet. Applet; // import Graphics class import java. awt. Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g. draw. String( "Welcome to Java Programming!", 25 ); g. draw. Oval(5, 5, 220, 35); } } March 29, 2000 CS 102 -01 Lecture 1. 2

New & Improved March 29, 2000 CS 102 -01 Lecture 1. 2

What is Java? • Convenient language for building networked applications • Designed to be easy for current programmers to learn • Protects you from yourself March 29, 2000 CS 102 -01 Lecture 1. 2
- Slides: 29