Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.