1 / 27

Espresso! A small cup of Java

"Espresso! is an educational and efficient programming language for creating Java applets. Learn Java syntax easily with Espresso! and build scalable, portable apps. Explore data types, program structure, and object-oriented concepts in Espresso!. The language features simple, object-oriented, and efficient programming styles. Discover sample programs and understand the stateful architecture of Espresso!. Scope and runtime library details provided for easy learning."

elinorc
Download Presentation

Espresso! A small cup of Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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 to Tcl and Java in syntax and semantics Espresso! Programming Language

  3. Key Features • Simple Espresso! Programming Language

  4. Key Features • Simple • Educational Espresso! Programming Language

  5. Key Features • Simple • Educational • Object-Oriented Espresso! Programming Language

  6. Key Features • Simple • Educational • Object-Oriented • Portable Espresso! Programming Language

  7. Key Features • Simple • Educational • Object-Oriented • Portable • Efficient Espresso! Programming Language

  8. Key Features • Simple • Educational • Object-Oriented • Portable • Efficient • Scalable Espresso! Programming Language

  9. card HelloWorld { print(“Hello World!”); } A Taste of Espresso!Hello, World! Espresso! Programming Language

  10. A Taste of Espresso!Hello, World! Espresso! Programming Language

  11. number Java double string Java String number array Javadouble[] string array Java String[] object array object TextBox Button CheckBox List Image Oval Rectangle A Taste of Espresso!Data Types and Objects Espresso! Programming Language

  12. A Taste of Espresso!Program Structure card card_name { statement; statement; … statement; } Espresso! Programming Language

  13. A Taste of Espresso!Type Declarations number phil = 5; : double phil = 5; string joya = “Joya”; : String joya = “Joya”; TextBox myTextBox; : EspressoTextBoxRT myTextBox = new EspressoTextBoxRT(); Espresso! Programming Language

  14. A Taste of Espresso!Array Declarations number[3] aaron = 5.4; : double[] aaron = new double[3]; for( int i=0; i<3; i++ ) aaron[i] = 5.4; Espresso! Programming Language

  15. A Taste of Espresso!Assignments phil = phil + 5; joya = joya + “ is cool”; aaron[2] = 5; erin[0] = “Sneak”; myButton.setWidth(phil); Espresso! Programming Language

  16. 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); } Java program (106 lines) import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.*; import 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); … … A Taste of Espresso!Sample Program Espresso! Programming Language

  17. A Taste of Espresso!Sample Program Espresso! Programming Language

  18. 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! Espresso! Programming Language

  19. Espresso! Programming Language

  20. The walker and Code Generation class work together to maintain 5 states: Declaring Initializing Executing Drawing Action Listening Each state represents a section in the generated applet file. A Taste of Espresso!State public class myApplet extends applet { Declarations Initializations Execute Draw Actions } Espresso! Programming Language

  21. 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); } A Taste of Espresso!State public class myApplet extends applet { Declarations Initializations Execute Draw Actions } Espresso! Programming Language

  22. 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. Espresso! Programming Language

  23. 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. Espresso! Programming Language

  24. A Taste of Espresso!Runtime Library Definition Button::EspressoButtonRT(this){ void setText( String ) String getText( void ) void action ( void ) } Espresso! Programming Language

  25. 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! Espresso! Programming Language

  26. 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. Espresso! Programming Language

  27. 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 Espresso! Programming Language

More Related