Espresso A small cup of Java - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Espresso A small cup of Java

Description:

joya = joya ' is cool'; aaron[2] = 5; erin[0] = 'Sneak'; myButton.setWidth(phil) ... Graphics temp = I2.getGraphics(); temp.setColor(getBackground ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 28
Provided by: labu316
Category:

less

Transcript and Presenter's Notes

Title: Espresso A small cup of Java


1
Espresso!A small cup of Java
  • Erin Adelman - eca41_at_columbia.edu
  • Aaron Bauman - abd54_at_columbia.edu
  • Philip Coakley - pwc35_at_columbia.edu
  • Joya Zuber - jaz49_at_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

3
Key Features
  • Simple

4
Key Features
  • Simple
  • Educational

5
Key Features
  • Simple
  • Educational
  • Object-Oriented

6
Key Features
  • Simple
  • Educational
  • Object-Oriented
  • Portable

7
Key Features
  • Simple
  • Educational
  • Object-Oriented
  • Portable
  • Efficient

8
Key Features
  • Simple
  • Educational
  • Object-Oriented
  • Portable
  • Efficient
  • Scalable

9
A Taste of Espresso!Hello, World!
  • card HelloWorld
  • print(Hello World!)

10
A Taste of Espresso!Hello, World!
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
A Taste of Espresso!Program Structure
  • card card_name
  • statement
  • statement
  • statement

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()

14
A Taste of Espresso!Array Declarations
  • number3 aaron 5.4
  • double aaron new double3
  • for( int i0 ilt3 i )
  • aaroni 5.4

15
A Taste of Espresso!Assignments
  • phil phil 5
  • joya joya is cool
  • aaron2 5
  • erin0 Sneak
  • myButton.setWidth(phil)

16
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)
  • 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)

17
A Taste of Espresso!Sample Program
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!

19
(No Transcript)
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

21
A Taste of Espresso!State
  • 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)

public class myApplet extends applet
Declarations
Initializations
Execute
Draw
Actions

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.

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.

24
A Taste of Espresso!Runtime Library Definition
  • ButtonEspressoButtonRT(this)
  • void setText( String )
  • String getText( void )
  • void action ( void )

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!

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.

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
Write a Comment
User Comments (0)
About PowerShow.com