Espresso A small cup of Java Erin Adelman eca41 columbia edu Aaron Bauman abd54 columbia edu Philip Coakley pwc35 columbia edu Joya Zuber jaz49 columbia edu CS4115 Programming Languages and Translators Professor Stephen Edwards December 2003 Espresso is A simple and efficient way for programmers of all levels to create java applets An educational language to familiarize novice programmers with java syntax Similar 01 14 19 to Tcl and Java in syntax and semantics Espresso Programming Language 2 Key Features Simple 01 14 19 Espresso Programming Language 3 Key Features Simple Educational 01 14 19 Espresso Programming Language 4 Key Features Simple Educational Object Oriented 01 14 19 Espresso Programming Language 5 Key Features Simple Educational Object Oriented Portable 01 14 19 Espresso Programming Language 6 Key Features Simple Educational Object Oriented Portable Efficient 01 14 19 Espresso Programming Language 7 Key Features Simple Educational Object Oriented Portable Efficient Scalable 01 14 19 Espresso Programming Language 8 A Taste of Espresso Hello World card HelloWorld print Hello World 01 14 19 Espresso Programming Language 9 A Taste of Espresso Hello World 01 14 19 Espresso Programming Language 10 A Taste of Espresso Data Types and Objects number Java double string Java String number array Java double string array Java String object 01 14 19 object TextBox Button CheckBox List Image Oval Rectangle array Espresso Programming Language 11 A Taste of Espresso Program Structure card card name statement statement statement 01 14 19 Espresso Programming Language 12 A Taste of Espresso Type Declarations number phil 5 double phil 5 string joya Joya String joya Joya TextBox myTextBox 01 14 19 EspressoTextBoxRT myTextBox new EspressoTextBoxRT Espresso Programming Language 13 A Taste of Espresso Array Declarations number 3 aaron 5 4 01 14 19 double aaron new double 3 for int i 0 i 3 i aaron i 5 4 Espresso Programming Language 14 A Taste of Espresso Assignments phil phil 5 joya joya is cool aaron 2 5 erin 0 Sneak myButton setWidth phil 01 14 19 Espresso Programming Language 15 A Taste of Espresso Sample Program Espresso program 21 lines card HelloWorld Image baby baby setSource http www columbia edu adb54 baby jpg Oval myOval number cx 150 number cy 90 number cwidth 100 number cheight 50 myOval setX cx myOval setY cy myOval setWidth cwidth myOval setHeight cheight myOval setColor red Rectangle myRectangle myRectangle setX cx 7 myRectangle setY cy 30 myRectangle setWidth 20 myRectangle setHeight 20 print Hello World cx 10 cy 25 01 14 19 Java program 106 lines import import import import import java awt java awt event java applet java net java util public class HelloWorld extends Applet implements Runnable Image img Graphics g2 null Image I2 int sx int sy public synchronized void paint Graphics g g getGraphics I2 createImage getWidth getHeight Graphics temp I2 getGraphics temp setColor getBackground temp fillRect 0 0 getWidth getHeight temp drawImage img 0 0 this temp setColor Color white Espresso Programming Language 16 A Taste of Espresso Sample Program 01 14 19 Espresso Programming Language 17 A Taste of Espresso Development Create and analyze sample applets with desired Espresso functionality Java applet control flow and event handling are confusing How can we abstract this applet architecture from the user A robust back end 01 14 19 Espresso Programming Language 18 01 14 19 Espresso Programming Language 19 A Taste of Espresso State The walker and Code Generation class work together to maintain 5 states public class myApplet extends applet Declarations Initializations Declaring Initializing Executing Drawing Action Listening Execute Draw Each state represents a section in the generated applet file 01 14 19 Actions Espresso Programming Language 20 A Taste of Espresso State card HelloWorld public class myApplet extends applet Image baby baby setSource http www columbia edu adb54 baby jpg Oval myOval number cx 150 number cy 90 number cwidth 100 number cheight 50 myOval setX cx myOval setY cy myOval setWidth cwidth myOval setHeight cheight myOval setColor red Rectangle myRectangle myRectangle setX cx 7 myRectangle setY cy 30 myRectangle setWidth 20 myRectangle setHeight 20 print Hello World cx 10 cy 25 Declarations Initializations Execute Draw Actions 01 14 19 Espresso Programming Language 21 A Taste of Espresso Scope Think Globally Espresso has a single scope Variables can be declared at any time in Espresso but will all be initialized globally in the generated Java file 01 14 19 Espresso Programming Language 22 A Taste of Espresso Runtime Library The Runtime Library includes a suite of wrapper classes that build AWT constructs RTL definitions are loaded into a type table that is used to verify library semantics The library is fully expandable to support new user defined objects and functions 01 14 19 Espresso Programming Language 23 A Taste of Espresso Runtime Library Definition Button EspressoButtonRT this void setText String String getText void void action void 01 14 19 Espresso Programming Language 24 A Taste of Espresso Testing Build language elements one by one testing as we go Have others outside the team write Espresso programs Espresso is so simple even UBW majors and monkeys can use it 01 14 19 Espresso Programming Language 25 Lessons Learned Start early Modularity is important for simplicity and effective testing It is difficult to accommodate four busy schedules Espresso requires a lot of caffeine 01 14 19 Espresso Programming Language 26 Future Developments Expand the Runtime Library to include more object types and methods Allow the Espresso programmer some control over the Applet Layout Manager Add keywords to dictate the design of the generated parent website 01 14 19 Espresso Programming Language 27
View Full Document
Unlocking...