Presentation is loading. Please wait.

Presentation is loading. Please wait.

Espresso! A small cup of Java

Similar presentations


Presentation on theme: "Espresso! A small cup of Java"— Presentation transcript:

1 Espresso! A small cup of Java
Erin Adelman - Aaron Bauman - Philip Coakley - Joya Zuber - CS4115 Programming Languages and Translators Professor Stephen Edwards, December 2003

2 Espresso! Programming Language
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 12/9/2018 Espresso! Programming Language

3 Espresso! Programming Language
Key Features Simple 12/9/2018 Espresso! Programming Language

4 Espresso! Programming Language
Key Features Simple Educational 12/9/2018 Espresso! Programming Language

5 Espresso! Programming Language
Key Features Simple Educational Object-Oriented 12/9/2018 Espresso! Programming Language

6 Espresso! Programming Language
Key Features Simple Educational Object-Oriented Portable 12/9/2018 Espresso! Programming Language

7 Espresso! Programming Language
Key Features Simple Educational Object-Oriented Portable Efficient 12/9/2018 Espresso! Programming Language

8 Espresso! Programming Language
Key Features Simple Educational Object-Oriented Portable Efficient Scalable 12/9/2018 Espresso! Programming Language

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

10 A Taste of Espresso! Hello, World!
12/9/2018 Espresso! Programming Language

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

12 A Taste of Espresso! Program Structure
card card_name { statement; } 12/9/2018 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(); 12/9/2018 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; 12/9/2018 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); 12/9/2018 Espresso! Programming Language

16 A Taste of Espresso! Sample Program
Espresso! program (21 lines) card HelloWorld { Image baby; baby.setSource( " 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); 12/9/2018 Espresso! Programming Language

17 A Taste of Espresso! Sample Program
12/9/2018 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! 12/9/2018 Espresso! Programming Language

19 Espresso! Programming Language
12/9/2018 Espresso! Programming Language

20 A Taste of Espresso! State
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. public class myApplet extends applet { Declarations Initializations Execute Draw Actions } 12/9/2018 Espresso! Programming Language

21 A Taste of Espresso! State
card HelloWorld { Image baby; baby.setSource( " 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); } public class myApplet extends applet { Declarations Initializations Execute Draw Actions } 12/9/2018 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. 12/9/2018 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. 12/9/2018 Espresso! Programming Language

24 A Taste of Espresso! Runtime Library Definition
Button::EspressoButtonRT(this){ void setText( String ) String getText( void ) void action ( void ) } 12/9/2018 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! 12/9/2018 Espresso! Programming Language

26 Espresso! Programming Language
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. 12/9/2018 Espresso! Programming Language

27 Espresso! Programming Language
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 12/9/2018 Espresso! Programming Language


Download ppt "Espresso! A small cup of Java"

Similar presentations


Ads by Google