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 -02 Lecture 1 -2 April 1, 1998 CS 102 -02 Lecture 1 -2
A History of the Java-Speaking Peoples • Video on demand needs set-top boxes – Set-top boxes need a small, network-friendly programming language – Do you have video on demand? Neither does anyone else. • Web catches on, needs small, networkfriendly programming language • And the rest is history. . . April 1, 1998 CS 102 -02 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. ” April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 – Example: RC 5 code-breaking April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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! April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 ); } } April 1, 1998 CS 102 -02 Lecture 1 -2
Run It, and Ta-Da! Prints out the message “Welcome to Java Programming!” at a specified location April 1, 1998 CS 102 -02 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. . . April 1, 1998 CS 102 -02 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) April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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” April 1, 1998 CS 102 -02 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. April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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() Welcome Applet because Welcome has its own paint() April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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. . . April 1, 1998 CS 102 -02 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 April 1, 1998 CS 102 -02 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); } } April 1, 1998 CS 102 -02 Lecture 1 -2
New & Improved April 1, 1998 CS 102 -02 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 • Handy for creating dancing babies April 1, 1998 CS 102 -02 Lecture 1 -2
- Slides: 30