Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST. Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation

Size: px
Start display at page:

Download "Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST. Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation"

Transcription

1 Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation

2 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

3 About us Alex Ruiz Senior Engineer at Oracle Founder and major contributor of FEST Father ;-) Michael Hüttermann Self-employed consultant on Java TM /JEE, SCM/ALM, SDLC tooling and agile development Speaker at conferences, author of books and articles Stage producer of Agile 2009's Tools for Agility track

4 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

5 Why do we need a Swing framework? Swing: powerful but difficult Swing has been available for many years It is very powerful and very complex Too easy to do things wrong and get away with it Too many possible paths: scares beginners Developers should focus on the application domain, not on the architecture Need a standard way to develop Swing UIs All bigger projects do write an own framework

6 Why do we need a Swing framework? Swing is too difficult for beginners Easy to adopt bad practices: application is a JFrame Internationalization Performance Organization of event listeners Much boiler plate code Development is error prone Patterns and architecture do matter!

7 Why do we need a Swing framework? Even experienced developers can get it wrong The most common: violations of Event Dispatch Thread (EDT) access Incorrect division of responsibilities: classes that perform logic are event listeners at the same time Pretty long kick-off time, not "straight ahead" Why only web frameworks? Many more!

8 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

9 Introducing the Swing Application Framework (SAF) Provides a simple application framework for Swing applications Not intended to cover all needs of applications JSR 296 Reference implementation in java.net To be included in Java 7 (or not?) Not intended to compete with Netbeans RCP or Eclipse RCP Easy to learn: no more than a day

10 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

11 SAF Features Application Lifecycle and common services Defines application lifecycle: startup, shutdown, etc. EDT-safe: o Application constructed in EDT o Application started in EDT Startup progress reported by standard milestones UI component (event) handling Basic session persistance Threading

12 SAF Features Application is not a JFrame anymore Developers only need to extend Application or a subclass, and override appropriate lifecycle methods: class MyApp extends Application { protected void startup(string[] args) { JFrame frame = new JFrame("My App"); frame.add(new JLabel("Hello World!")); frame.pack(); frame.setvisible(true); } public static void main(string[] args) { Application.launch(MyApp.class, args); } }

13 SAF Features Application is not a JFrame anymore Extend SingleFrameApplication for an application with a primary JFrame: class MyApp extends SingleFrameApplication { protected void startup(string[] args) { JPanel panel = new JPanel(new BorderLayout()); panel.add(acomponent, BorderLayout.NORTH); show(panel); } public static void main(string[] args) { Application.launch(MyApp.class, args); } }

14 SAF Features Component Resource Injection Set component properties whose names match a resource name Inject just one component, or all components in a hierarchy Resource names must match: component.getname() +.propertyname Converts Strings to correct type (e.g. icon) Uses good old ResourceBundle (*.properties files)

15 SAF Features Field Resource Injection Icon valued fields initialized from a ResourceMap: public class Form extends JPanel Icon Icon readyicon; void showstatus(boolean busy) { mylabel.seticon(busy? busyicon : readyicon); } Form() { Application app = Application.getInstance(); ResourceMap r = app.getcontext().getresourcemap(form.class); r.injectfields(this); } } ResourceBundle properties File: # resources/form.properties ResourceBundle Form.busyIcon = busy-icon.png Form.readyIcon = ready-icon.png

16 SAF Features Actions Plain old Swing world: o Actions implement Action or extend AbstractAction o Semantics: actionperformed(), enabled, selected o ActionMap maps names to actions

17 SAF Features Actions (II) With SAF: o Actions are simply annotated one per actionperformed o They can also be asynchronous or block facets o One class can define many actions class MyActions void newfile() {... void fileopened(actionevent e) {... } }

18 SAF Features Actions (III) Asynchronous actions return a Task<?,?> savefile() { return new MyTask(); } Task extends SwingWorker Overwrite methods like doinbackground()

19 SAF Features Actions (IV) Blocking actions have five scopes: NONE, ACTION, WINDOW, COMPONENT, Blocks the facet Provides basic functionality like blocking dialogs

20 SAF Features Action Maps Create an Action for ActionMap amap = getcontext().getactionmap() cutbutton.setaction(amap.get("cut")); copybutton.setaction(amap.get("copy")); Action attributes come from a ResourceMap: # resources/myactions.properties ResourceBundle cut.action.text = Cut cut.action.accelerator = control U cut.action.shortdescription = Cut to clipboard copy.action.text = Copy copy.action.acceleratorkey = control C copy.action.shortdescription = Copies to clipboard

21 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

22 Status of SAF JSR 296 marked as inactive Original project lead left Sun Project revived under new lead: Alexander Potochkin Project resumed activity, call for contribution Further direction not clear in all facets What should be content of SAF? Legacy apps vs. greenfield projects SAF to be included in Java 7 SAF probably not included in Java 7

23 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

24 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

25 Testing Swing UIs Why? During development: o Testing GUIs can make the entire system safer and more robust o Tests to specify the functionality o Test early > better design During acceptance testing (specify features) and integration/system testing During maintenance: o Code might be refactored frequently to improve design, and this code often encloses great portions of the user interface. o Having a solid test suite that includes GUI code can give us confidence that we are not inadvertently introducing bugs.

26 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

27 Why UI testing is hard Conventional unit testing is not suitable for testing UIs: UI components are usually composed of more than one class The room for potential interactions with a UI is huge Conventional test coverage is not enough to cover all user interaction scenarios Addressing and driving the controls Test isolation and reuse of tests CR is not enough

28 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

29 Writing testable GUIs Separate Model and View Use a unique name for GUI components Do not test default component behavior Concentrate on testing the expected behavior of your GUI Test isolation Mocking Do not only use CR-Tools!

30 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

31 Introducing FEST Open Source Library for UI Testing Supports functional Swing UI testing Website: Its API provides a fluent interface Open Source project (Apache 2.0 license) Supports both TestNG and JUnit Simplifies troubleshooting UI test failures Hosted at CodeHaus

32 Introducing FEST Robust UI testing Simulates user input using native UI events Provides a reliable mechanism for finding GUI components Tolerates changes in o Component position o Component size o Layout

33 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

34 FEST Features Fluent Interface Compact, intuitive and readable API Makes it easy to write and maintain UI tests dialog.combobox("domain").select("users"); dialog.textbox("name").entertext("leia"); dialog.button("login").click(); dialog.optionpane().requireerrormessage();

35 FEST Features Reliable Component Lookup By default, uses component names to look up UI components dialog.button("ok").click(); It can also use component types and custom search criteria (e.g. testing legacy applications) GenericTypeMatcher<JButton> textmatcher = new GenericTypeMatcher<JButton>() { protected boolean ismatching(jbutton button) { return "OK".equals(button.getText()); } }; dialog.button(textmatcher).click();

36 FEST Features Test Violations of EDT Access EDT access violation is a common bad practice, even for experienced Swing developers FEST can verify that EDT access is correct Simply install: FailOnThreadViolationRepaintManager.install();

37 FEST Features Troubleshooting UI test failures Failures may be due to: o Environmental conditions o A GUI component could not be found o More than one GUI component satisfied the given search criteria o Programming defect

38 FEST Features Troubleshooting UI test failures (II) Failure due to environmental conditions o Typical example: scheduled anti-virus software scan starts in the middle of our test session o A screenshot of the desktop at the moment of failure can help us determine if an environmental condition was responsible for the failure

39 FEST Features Troubleshooting UI test failures (III) Failure due to environmental conditions o FEST can automatically embed a screenshot of the desktop in a HTML test report (TestNG or JUnit)! o Configuration is easy, short and reuses existing infrastructure

40 FEST Features Troubleshooting UI test failures (IV) Failure due to GUI component not found o For example, looking for a button with name ok in a dialog that does not contain such button! o Having access to the current component hierarchy can help us figure out why a component could not be found o FEST includes the current component hierarchy when throwing a ComponentLookupException

41 FEST Features Troubleshooting UI test failures (V) Failure due to more than one GUI component satisfies a lookup condition o For example, looking up a button with name ok in a dialog o We have accidentally named two buttons with the same name! o Once again, FEST assists us by providing the list of found components in the thrown ComponentLookupException

42 FEST Features JavaFX Support public void shouldupdatetextboxwithpressednumber() { calculator.swingbutton(withtext("8")).click(); calculator.textbox().requiretext("8"); calculator.swingbutton(withtext("6")).click(); calculator.textbox().requiretext("86"); } Work in progress

43 FEST Features Fluent Assertions String[] newhires = employees.newhiresnames(); assertthat(newhires).containsonly("r2-d2"); assertthat(yoda).isinstanceof(jedi.class).isequalto(foundjedi).isnotequalto(foundsith);

44 FEST Features DSL for Java Reflection // Regular Java Reflection: Method method = Names.class.getMethod("get", int.class); AccessController.doPrivileged( new PrivilegedAction<Void>() { public Void run() { method.setaccessible(true); return null; } }); String name = (String) method.invoke(names, 8); // FEST-Reflection: String name = method("get").withreturntype(string.class).withparametertypes(int.class).in(names).invoke(8);

45 FEST Features Template for public void shouldupdateemployee() { new EasyMockTemplate(mockEmployeeDao) { protected void expectations() { mockemployeedao.update(employee); } protected void codetotest() { employeebo.updateemployee(employee); } }.run(); }

46 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

47 FEST Roadmap Provide support for 3rd party Swing libraries: o Flamingo Component Suite o JIDE o SwingX Groovy-based DSL Support for JavaFX (in the works) Much more!

48 Agenda Why do we need a Swing framework? Introducing the Swing Application Framework (SAF) SAF Features Status of SAF Testing Swing UIs Why UI testing is hard Writing testable UIs Introducing FEST FEST Features FEST Roadmap

49 Summary Swing is a very powerful UI toolkit With power comes complexity SAF can simplify creation of Swing UIs SAF is a lean application framework Creation is only the beginning, we need to test UI testing is necessary for improving the quality of our applications FEST provides a tool that makes creation and maintenance of UI tests a breeze Test your UIs!

50 Michael Hüttermann Alex Ruiz

Using NetBeans IDE for Desktop Development. Geertjan Wielenga

Using NetBeans IDE for Desktop Development. Geertjan Wielenga Using NetBeans IDE for Desktop Development Geertjan Wielenga http://blogs.sun.com/geertjan Introduction Standards Resurgence of Swing Performance & look and feel Delivery over the web Layout manager &

More information

Java Swing Introduction

Java Swing Introduction Course Name: Advanced Java Lecture 18 Topics to be covered Java Swing Introduction What is Java Swing? Part of the Java Foundation Classes (JFC) Provides a rich set of GUI components Used to create a Java

More information

JSR 377 Desktop Application Framework September Andres Almiray

JSR 377 Desktop Application Framework September Andres Almiray JSR 377 Desktop Application Framework September 29 2017 Andres Almiray Agenda Goals Information to be gathered Implementation notes Issues Questions, discussion, next steps 2 Goals 3 Goals Define APIs

More information

Graphical User Interfaces (GUIs)

Graphical User Interfaces (GUIs) CMSC 132: Object-Oriented Programming II Graphical User Interfaces (GUIs) Department of Computer Science University of Maryland, College Park Model-View-Controller (MVC) Model for GUI programming (Xerox

More information

Unit testing basics & more...

Unit testing basics & more... Unit testing basics & more... by Papapetrou P.Patroklos Twitter hashtag : Thessaloniki Java Meetup - December 2014 Agenda Unit testing introduction Differences with other types of tests Key concepts Rules

More information

Oracle Fusion Middleware 11g: Build Applications with ADF I

Oracle Fusion Middleware 11g: Build Applications with ADF I Oracle University Contact Us: +966 1 1 2739 894 Oracle Fusion Middleware 11g: Build Applications with ADF I Duration: 5 Days What you will learn This course is aimed at developers who want to build Java

More information

JSR377 What's up and what's next. Andres Almiray Canoo Engineering AG

JSR377 What's up and what's next. Andres Almiray Canoo Engineering AG JSR377 What's up and what's next Andres Almiray - @aalmiray Canoo Engineering AG PREVIOUS ATTEMPTS JSR 193 Client Side Container JSR 296 Swing Application Framework JSR 295 Beans Binding JSR 296 had the

More information

Improve and Expand JavaServer Faces Technology with JBoss Seam

Improve and Expand JavaServer Faces Technology with JBoss Seam Improve and Expand JavaServer Faces Technology with JBoss Seam Michael Yuan Kito D. Mann Product Manager, Red Hat Author, JSF in Action http://www.michaelyuan.com/seam/ Principal Consultant Virtua, Inc.

More information

EPITA Première Année Cycle Ingénieur. Atelier Java - J5

EPITA Première Année Cycle Ingénieur. Atelier Java - J5 EPITA Première Année Cycle Ingénieur marwan.burelle@lse.epita.fr http://www.lse.epita.fr Overview 1 2 Different toolkits AWT: the good-old one, lakes some features and has a plateform specific look n

More information

Introduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014

Introduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014 Introduction to GUIs Principles of Software Construction: Objects, Design, and Concurrency Jonathan Aldrich and Charlie Garrod Fall 2014 Slides copyright 2014 by Jonathan Aldrich, Charlie Garrod, Christian

More information

Swinging from the Outside

Swinging from the Outside Swinging from the Outside A guide to navigating Swing from the outside of Sun Brian Mason, Dir Software of Engineering, Teseda S295599 Space is big, really big. You might think it is a long way down to

More information

Java: Graphical User Interfaces (GUI)

Java: Graphical User Interfaces (GUI) Chair of Software Engineering Carlo A. Furia, Marco Piccioni, and Bertrand Meyer Java: Graphical User Interfaces (GUI) With material from Christoph Angerer The essence of the Java Graphics API Application

More information

Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms.

Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms. Java GUI Windows Events Drawing 1 Java GUI Toolkits Toolkit AWT Description Heavyweight with platform-specific widgets. AWT applications were limited to commonfunctionality that existed on all platforms.

More information

Oracle Fusion Middleware 11g: Build Applications with ADF I

Oracle Fusion Middleware 11g: Build Applications with ADF I Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 4108 4709 Oracle Fusion Middleware 11g: Build Applications with ADF I Duration: 5 Days What you will learn Java EE is a standard, robust,

More information

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints Active Endpoints ActiveVOS Platform Architecture ActiveVOS Unique process automation platforms to develop, integrate, and deploy business process applications quickly User Experience Easy to learn, use

More information

Introduction to Graphical Interface Programming in Java. Introduction to AWT and Swing

Introduction to Graphical Interface Programming in Java. Introduction to AWT and Swing Introduction to Graphical Interface Programming in Java Introduction to AWT and Swing GUI versus Graphics Programming Graphical User Interface (GUI) Graphics Programming Purpose is to display info and

More information

Jonathan Aldrich Charlie Garrod

Jonathan Aldrich Charlie Garrod Principles of Software Construction: Objects, Design, and Concurrency (Part 3: Design Case Studies) Introduction to GUIs Jonathan Aldrich Charlie Garrod School of Computer Science 1 Administrivia Homework

More information

OSGi on the Server. Martin Lippert (it-agile GmbH)

OSGi on the Server. Martin Lippert (it-agile GmbH) OSGi on the Server Martin Lippert (it-agile GmbH) lippert@acm.org 2009 by Martin Lippert; made available under the EPL v1.0 October 6 th, 2009 Overview OSGi in 5 minutes Apps on the server (today and tomorrow)

More information

CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1

CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1 INTRODUCTION xxii CHAPTER 1: A GENERAL INTRODUCTION TO PROGRAMMING 1 The Programming Process 2 Object-Oriented Programming: A Sneak Preview 5 Programming Errors 6 Syntax/Compilation Errors 6 Runtime Errors

More information

Properties of High Quality Software. CSE219, Computer Science III Stony Brook University

Properties of High Quality Software. CSE219, Computer Science III Stony Brook University Properties of High Quality Software CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Software Engineering Basics Important Principles for creating a Software Solution:

More information

CSE wi Final Exam 3/12/18 Sample Solution

CSE wi Final Exam 3/12/18 Sample Solution Question 1. (8 points, 2 each) Equality. Recall that there are several different notions of object equality that we ve encountered this quarter. In particular, we have the following three: Reference equality:

More information

JAVA SYLLABUS FOR 6 MONTHS

JAVA SYLLABUS FOR 6 MONTHS JAVA SYLLABUS FOR 6 MONTHS Java 6-Months INTRODUCTION TO JAVA Features of Java Java Virtual Machine Comparison of C, C++, and Java Java Versions and its domain areas Life cycle of Java program Writing

More information

Junit Overview. By Ana I. Duncan

Junit Overview. By Ana I. Duncan Junit Overview By Ana I. Duncan 1 What Is Junit Why Junit, Why test? Junit Lifecycle Junit Examples from CM Other Testing frameworks Resources Before After Agenda 2 JUnit is a member of the xunit testing

More information

Oracle Fusion Middleware 11g: Build Applications with ADF Accel

Oracle Fusion Middleware 11g: Build Applications with ADF Accel Oracle University Contact Us: +352.4911.3329 Oracle Fusion Middleware 11g: Build Applications with ADF Accel Duration: 5 Days What you will learn This is a bundled course comprising of Oracle Fusion Middleware

More information

Mobile Development Workshop DAY 2: INTRODUCTION TO JAVA

Mobile Development Workshop DAY 2: INTRODUCTION TO JAVA Mobile Development Workshop DAY 2: INTRODUCTION TO JAVA Overview Morning session For loops Strings and collections Graphical User Interfaces Recap Last time we covered Java the programming language and

More information

Testing with Soap UI. Tomaš Maconko

Testing with Soap UI. Tomaš Maconko Testing with Soap UI Tomaš Maconko 1 Content What is Soap UI? What features does the Soap UI have? Usage in project context Pros and cons Soap UI alternatives 2 What is Soap UI? Open Source Testing Tool

More information

Agenda Time (PT) 8:45 a.m. Event Platform Opening 9:00 a.m. Keynote - Java: Present and Future Java EE 7 Java SE 8 Java Embedded

Agenda Time (PT) 8:45 a.m. Event Platform Opening 9:00 a.m. Keynote - Java: Present and Future Java EE 7 Java SE 8 Java Embedded Virtual Developer Day: Java 2014 May 6 th 9:00 a.m. - 1:00 p.m. PDT / 12:00 p.m. - 4:00 p.m. EDT / 1:00 p.m. 5:00 p.m. BRT Agenda Time (PT) 8:45 a.m. Event Platform Opening 9:00 a.m. Keynote - Java: Present

More information

CSE wi Final Exam 3/12/18. Name UW ID#

CSE wi Final Exam 3/12/18. Name UW ID# Name UW ID# There are 13 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed book, closed notes,

More information

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class.

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class. Q1. If you add a component to the CENTER of a border layout, which directions will the component stretch? A1. The component will stretch both horizontally and vertically. It will occupy the whole space

More information

Netbeans Platform For Beginners

Netbeans Platform For Beginners Netbeans Platform For Beginners Free PDF ebook Download: Netbeans Platform For Beginners Download or Read Online ebook netbeans platform for beginners in PDF Format From The Best User Guide Database Platform

More information

Introduction to the JAVA UI classes Advanced HCI IAT351

Introduction to the JAVA UI classes Advanced HCI IAT351 Introduction to the JAVA UI classes Advanced HCI IAT351 Week 3 Lecture 1 17.09.2012 Lyn Bartram lyn@sfu.ca About JFC and Swing JFC Java TM Foundation Classes Encompass a group of features for constructing

More information

In this lab we will practice creating, throwing and handling exceptions.

In this lab we will practice creating, throwing and handling exceptions. Lab 5 Exceptions Exceptions indicate that a program has encountered an unforeseen problem. While some problems place programmers at fault (for example, using an index that is outside the boundaries of

More information

Turning a Marathon Runner into a Sprinter: Adopting Agile Testing Strategies and Practices at Microsoft

Turning a Marathon Runner into a Sprinter: Adopting Agile Testing Strategies and Practices at Microsoft Turning a Marathon Runner into a Sprinter: Adopting Agile Testing Strategies and Practices at Microsoft Jean Hartmann Test Architect jeanhar@microsoft.com Overview Embracing Change Quality-related themes

More information

J2EE Application Development : Conversion and Beyond Osmond Ng

J2EE Application Development : Conversion and Beyond Osmond Ng IBM Software Group J2EE Application Development : Conversion and Beyond Osmond Ng IBM Software Group Practitioner View Point IBM Rational Application Developer J2EE/EJB Tooling J2EE construction tools

More information

Enterprise Java TM Web Apps with Google Open Source Technology

Enterprise Java TM Web Apps with Google Open Source Technology Enterprise Java TM Web Apps with Google Open Source Technology Dhanji R. Prasanna Google, Inc. Dhanji R. Prasanna Software Engineer at Google > Co-author JAX-RS: Java API for RESTful Web Services JSR-303:

More information

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved. 1 Copyright 2011, Oracle and/or its affiliates. All rights reserved. ORACLE PRODUCT LOGO Oracle ADF Programming Best Practices Frank Nimphius Oracle Application Development Tools Product Management 2 Copyright

More information

(Incomplete) History of GUIs

(Incomplete) History of GUIs CMSC 433 Programming Language Technologies and Paradigms Spring 2004 Graphical User Interfaces April 20, 2004 (Incomplete) History of GUIs 1973: Xerox Alto 3-button mouse, bit-mapped display, windows 1981:

More information

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc.

Tooling for Ajax-Based Development. Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. Tooling for Ajax-Based Development Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. 1 Agenda In The Beginning Frameworks Tooling Architectural Approaches Resources 2 In The Beginning 3

More information

MEAP Edition Manning Early Access Program Get Programming with Java Version 1

MEAP Edition Manning Early Access Program Get Programming with Java Version 1 MEAP Edition Manning Early Access Program Get Programming with Java Version 1 Copyright 2018 Manning Publications For more information on this and other Manning titles go to www.manning.com welcome First,

More information

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx

THIS IS ONLY SAMPLE RESUME - DO NOT COPY AND PASTE INTO YOUR RESUME. WE ARE NOT RESPONSIBLE Name: xxxxxx Name: xxxxxx Email ID: xxxxxx Ph: xxxxxx Summary: Over 7 years of experience in object oriented programming, design and development of Multi-Tier distributed, Enterprise applications using Java and J2EE

More information

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 Enterprise Java Development using JPA, Hibernate and Spring Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ)

More information

The Eclipse Rich Ajax Platform

The Eclipse Rich Ajax Platform The Eclipse Rich Ajax Platform Frank Appel RAP Tech Lead fappel@innoopract.com Eclipse RAP 1.1 Copyright Innoopract made available under the EPL 1.0 page: 1 The Innoopract pitch Integration & delivery

More information

Rational Functional Tester - Tips and Tricks

Rational Functional Tester - Tips and Tricks IBM Rational Software Development Conference 2006 Rational Functional Tester - Tips and Tricks Suma Byrappa IBM Rational Swathi Rao 2006 IBM Corporation Agenda IBM Rational Software Development Conference

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 3 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2016 Recap Requirements Engineering functional / non-functional requirements Elicitation,

More information

JVA-117A. Spring-MVC Web Applications

JVA-117A. Spring-MVC Web Applications JVA-117A. Spring-MVC Web Applications Version 4.2 This course enables the experienced Java developer to use the Spring application framework to manage objects in a lightweight, inversion-of-control container,

More information

CS Exam 1 Review Suggestions

CS Exam 1 Review Suggestions CS 235 - Fall 2015 - Exam 1 Review Suggestions p. 1 last modified: 2015-09-30 CS 235 - Exam 1 Review Suggestions You are responsible for material covered in class sessions, lab exercises, and homeworks;

More information

Topic 9: Swing. Swing is a BIG library Goal: cover basics give you concepts & tools for learning more

Topic 9: Swing. Swing is a BIG library Goal: cover basics give you concepts & tools for learning more Swing = Java's GUI library Topic 9: Swing Swing is a BIG library Goal: cover basics give you concepts & tools for learning more Assignment 5: Will be an open-ended Swing project. "Programming Contest"

More information

Topic 9: Swing. Why are we studying Swing? GUIs Up to now: line-by-line programs: computer displays text user types text. Outline. 1. Useful & fun!

Topic 9: Swing. Why are we studying Swing? GUIs Up to now: line-by-line programs: computer displays text user types text. Outline. 1. Useful & fun! Swing = Java's GUI library Topic 9: Swing Swing is a BIG library Goal: cover basics give you concepts & tools for learning more Why are we studying Swing? 1. Useful & fun! 2. Good application of OOP techniques

More information

Graphical User Interface (GUI)

Graphical User Interface (GUI) Graphical User Interface (GUI) Layout Managment 1 Hello World Often have a static method: createandshowgui() Invoked by main calling invokelater private static void createandshowgui() { } JFrame frame

More information

Web Application Development Using Spring, Hibernate and JPA

Web Application Development Using Spring, Hibernate and JPA Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days Price: 1,995 + VAT Course Description: This course provides a comprehensive introduction to JPA (the Java Persistence API),

More information

Java. GUI building with the AWT

Java. GUI building with the AWT Java GUI building with the AWT AWT (Abstract Window Toolkit) Present in all Java implementations Described in most Java textbooks Adequate for many applications Uses the controls defined by your OS therefore

More information

Automated GUI testing. How to test an interactive application automatically?

Automated GUI testing. How to test an interactive application automatically? Automated GUI testing How to test an interactive application automatically? Some GUI facts Software testing accounts for 50-60% of total software development costs GUIs can constitute as much as 60% of

More information

AN ISO 9001:2008 CERTIFIED COMPANY. Software Testing TRAINING.

AN ISO 9001:2008 CERTIFIED COMPANY. Software Testing TRAINING. AN ISO 9001:2008 CERTIFIED COMPANY Software Testing TRAINING www.webliquids.com ABOUT US Who we are: WebLiquids is an ISO (9001:2008), Google, Microsoft Certified Advanced Web Educational Training Organisation.

More information

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering The Power of Unit Testing and it s impact on your business Ashish Kumar Vice President, Engineering Agitar Software, 2006 1 The Power of Unit Testing Why Unit Test? The Practical Reality Where do we go

More information

Petr Suchomel Architect, NetBeans Mobility

Petr Suchomel Architect, NetBeans Mobility NetBeans 6.0 A Fresh Look into Java Development Petr Suchomel Architect, NetBeans Mobility Sun Microsystems Agenda The NetBeans IDE, Platform, Community What's new in NetBeans 6.0 Quick look over NetBeans

More information

Gradle Leveraging Groovy for Building Java Applications. Hans Dockter Gradle Project Lead

Gradle Leveraging Groovy for Building Java Applications. Hans Dockter Gradle Project Lead Gradle Leveraging Groovy for Building Java Applications Hans Dockter Gradle Project Lead mail@dockter.biz About Me Founder and Project Lead of Gradle Independent Consultant Trainer for Skills Matter (TTD,

More information

Oracle Developer Day

Oracle Developer Day Oracle Developer Day Sponsored by: J2EE Track: Session #3 Developing JavaServer Faces Applications Name Title Agenda Introduction to JavaServer Faces What is JavaServer Faces Goals Architecture Request

More information

This exam is closed textbook(s) and closed notes. Use of any electronic device (e.g., for computing and/or communicating) is NOT permitted.

This exam is closed textbook(s) and closed notes. Use of any electronic device (e.g., for computing and/or communicating) is NOT permitted. York University AS/AK/ITEC 2610 3.0 All Sections OBJECT-ORIENTED PROGRAMMING Midterm Test Duration: 90 Minutes This exam is closed textbook(s) and closed notes. Use of any electronic device (e.g., for

More information

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA Mobile Application Development Introduction Dr. Christelle Scharff cscharff@pace.edu Pace University, USA Objectives Getting an overview of the mobile phone market, its possibilities and weaknesses Providing

More information

<Insert Picture Here> JavaFX 2.0

<Insert Picture Here> JavaFX 2.0 1 JavaFX 2.0 Dr. Stefan Schneider Chief Technologist ISV Engineering The following is intended to outline our general product direction. It is intended for information purposes only,

More information

How we reached 0 technical debt in our Eclipse project

How we reached 0 technical debt in our Eclipse project How we reached 0 technical debt in our Eclipse project Lorenzo Bettini Dip. DISIA, University of Firenze, Italy Vincenzo Caselli, Francesco Guidieri RCP-Vision, Firenze, Italy EclipseCon Europe, 2016 Our

More information

Building Web Applications With The Struts Framework

Building Web Applications With The Struts Framework Building Web Applications With The Struts Framework ApacheCon 2003 Session TU23 11/18 17:00-18:00 Craig R. McClanahan Senior Staff Engineer Sun Microsystems, Inc. Slides: http://www.apache.org/~craigmcc/

More information

Introduction to concurrency and GUIs

Introduction to concurrency and GUIs Principles of Software Construction: Objects, Design, and Concurrency Part 2: Designing (Sub)systems Introduction to concurrency and GUIs Charlie Garrod Bogdan Vasilescu School of Computer Science 1 Administrivia

More information

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES 1 2 13 Exception Handling It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something. Franklin Delano Roosevelt O throw away the worser

More information

[module lab 2.2] GUI FRAMEWORKS & CONCURRENCY

[module lab 2.2] GUI FRAMEWORKS & CONCURRENCY v1.0 BETA Sistemi Concorrenti e di Rete LS II Facoltà di Ingegneria - Cesena a.a 2008/2009 [module lab 2.2] GUI FRAMEWORKS & CONCURRENCY 1 GUI FRAMEWORKS & CONCURRENCY Once upon a time GUI applications

More information

Oracle Developer Day

Oracle Developer Day Oracle Developer Day Sponsored by: Session5 Focusing on the UI Speaker Speaker Title Page 1 1 Agenda Building the User Interface UI Development Page Flow A Focus on Faces Introducing Java Server Faces

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

Continuous Testing in Eclipse. David Saff, Michael D. Ernst MIT CSAIL etx 2004, Barcelona, Spain

Continuous Testing in Eclipse. David Saff, Michael D. Ernst MIT CSAIL etx 2004, Barcelona, Spain Continuous Testing in Eclipse David Saff, Michael D. Ernst MIT CSAIL etx 2004, Barcelona, Spain Continuous testing: inspired by continuous compilation Continuous compilation, as in Eclipse, notifies the

More information

CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM

CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM CS 201 Advanced Object-Oriented Programming Lab 6 - Sudoku, Part 2 Due: March 10/11, 11:30 PM Introduction to the Assignment In this lab, you will finish the program to allow a user to solve Sudoku puzzles.

More information

CS 209 Programming in Java #10 Exception Handling

CS 209 Programming in Java #10 Exception Handling CS 209 Programming in Java #10 Exception Handling Textbook Chapter 15 Spring, 2006 Instructor: J.G. Neal 1 Topics What is an Exception? Exception Handling Fundamentals Errors and Exceptions The try-catch-finally

More information

Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC

Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 67863102 Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC Duration: 5 Days What you will learn This Oracle Middleware

More information

GUI Output. Adapted from slides by Michelle Strout with some slides from Rick Mercer. CSc 210

GUI Output. Adapted from slides by Michelle Strout with some slides from Rick Mercer. CSc 210 GUI Output Adapted from slides by Michelle Strout with some slides from Rick Mercer CSc 210 GUI (Graphical User Interface) We all use GUI s every day Text interfaces great for testing and debugging Infants

More information

GUI Testing to the edge. Quality is not a given and testing is fun

GUI Testing to the edge. Quality is not a given and testing is fun GUI Testing to the edge Quality is not a given and testing is fun Your challenge: Software quality You develop / maintain complex GUI applications in Java Swing, SWT/RCP, FX and/or Web face the risk/costs

More information

Eclipse + Html: A Journey

Eclipse + Html: A Journey Eclipse + Html: A Journey Kris De Volder , Pivotal Software Martin Lippert , Pivotal Software 1 Outline Goal Motivation Case Studies The Journey API Comparison

More information

1. What is Jav a? simple

1. What is Jav a? simple 1. What is Jav a? Thanks to Java is a new programming language developed at Sun under the direction of James Gosling. As far as possible it is based on concepts from C, Objective C and C++. Java is interpreted

More information

KF5008 Program Design & Development. Lecture 1 Usability GUI Design and Implementation

KF5008 Program Design & Development. Lecture 1 Usability GUI Design and Implementation KF5008 Program Design & Development Lecture 1 Usability GUI Design and Implementation Types of Requirements Functional Requirements What the system does or is expected to do Non-functional Requirements

More information

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson More on Design CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson Outline Additional Design-Related Topics Design Patterns Singleton Strategy Model View Controller Design by

More information

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software

Groovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software Groovy & Grails Scripting for Modern Web Applications Rohit Nayak Talentica Software Agenda Demo: Quick intro to Grails Scripting, Web Applications and Grails/Groovy REST service in Grails Demo Internals

More information

Wednesday, January 25, 12

Wednesday, January 25, 12 Java EE on Google App Engine: CDI to the rescue! Aleš Justin JBoss by Red Hat Agenda What is GAE and CDI? Why GAE and CDI? Running JavaEE on GAE Other JavaEE technologies Development vs. Production Problems

More information

Web Application Development Using Spring, Hibernate and JPA

Web Application Development Using Spring, Hibernate and JPA Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days US Price: $2795 UK Price: 1,995 *Prices are subject to VAT CA Price: CDN$3,275 *Prices are subject to GST/HST Delivery Options:

More information

Principles of Software Construction: Testing: One, Two, Three

Principles of Software Construction: Testing: One, Two, Three Principles of Software Construction: Testing: One, Two, Three Josh Bloch Charlie Garrod School of Computer Science 1 Administrivia Homework 4a due today, 11:59 p.m. Design review meeting is mandatory But

More information

Patterns and Best Practices for dynamic OSGi Applications

Patterns and Best Practices for dynamic OSGi Applications Patterns and Best Practices for dynamic OSGi Applications Kai Tödter, Siemens Corporate Technology Gerd Wütherich, Freelancer Martin Lippert, akquinet it-agile GmbH Agenda» Dynamic OSGi applications» Basics»

More information

Graphic User Interfaces. - GUI concepts - Swing - AWT

Graphic User Interfaces. - GUI concepts - Swing - AWT Graphic User Interfaces - GUI concepts - Swing - AWT 1 What is GUI Graphic User Interfaces are used in programs to communicate more efficiently with computer users MacOS MS Windows X Windows etc 2 Considerations

More information

Introduction to Java

Introduction to Java Introduction to Java Module 1: Getting started, Java Basics 22/01/2010 Prepared by Chris Panayiotou for EPL 233 1 Lab Objectives o Objective: Learn how to write, compile and execute HelloWorld.java Learn

More information

WHITESTEIN. Agents in a J2EE World. Technologies. Stefan Brantschen. All rights reserved.

WHITESTEIN. Agents in a J2EE World. Technologies. Stefan Brantschen. All rights reserved. WHITESTEIN Technologies 1 Agents in a J2EE World Stefan Brantschen ttt.info.j2ee v1.6 2002-02-10 SBR Copyright 2002 by Whitestein Technologies AG, Switzerland Goal and Outline Goal Present how J2EE EJB

More information

SYLLABUS JAVA COURSE DETAILS. DURATION: 60 Hours. With Live Hands-on Sessions J P I N F O T E C H

SYLLABUS JAVA COURSE DETAILS. DURATION: 60 Hours. With Live Hands-on Sessions J P I N F O T E C H JAVA COURSE DETAILS DURATION: 60 Hours With Live Hands-on Sessions J P I N F O T E C H P U D U C H E R R Y O F F I C E : # 4 5, K a m a r a j S a l a i, T h a t t a n c h a v a d y, P u d u c h e r r y

More information

VizzAnalyzer goes Eclipse!

VizzAnalyzer goes Eclipse! School of Mathematics and Systems Engineering Reports from MSI - Rapporter från MSI VizzAnalyzer goes Eclipse! David Ruiz De Azua Jun 2007 MSI Report 07064 Växjö University ISSN 1650-2647 SE-351 95 VÄXJÖ

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Automated Acceptance Testing

Automated Acceptance Testing Automated Acceptance Testing Björn Beskow Callista Enterprise AB bjorn.beskow@callista.se http://www.callista.se/enterprise CADEC 2004-01-28, Automated Acceptance Testing, Slide 1 Target audience and Objectives

More information

G51PGP Programming Paradigms. Lecture 008 Inner classes, anonymous classes, Swing worker thread

G51PGP Programming Paradigms. Lecture 008 Inner classes, anonymous classes, Swing worker thread G51PGP Programming Paradigms Lecture 008 Inner classes, anonymous classes, Swing worker thread 1 Reminder subtype polymorphism public class TestAnimals public static void main(string[] args) Animal[] animals

More information

Strategies for Loose Coupling in Large Java Desktop Applications

Strategies for Loose Coupling in Large Java Desktop Applications Strategies for Loose Coupling in Large Java Desktop Applications Geertjan Wielenga geertjan.wielenga@oracle.com blogs.oracle.com/geertjan @geertjanw Zoran Sevarac Marjan Šterk Sadi El Assadi Boris Pran

More information

CS11 Advanced Java. Winter Lecture 2

CS11 Advanced Java. Winter Lecture 2 CS11 Advanced Java Winter 2011-2012 Lecture 2 Today s Topics n Assertions n Java 1.5 Annotations n Classpaths n Unit Testing! n Lab 2 hints J Assertions! n Assertions are a very useful language feature

More information

JBuilder 2007 Product Tour November 2006

JBuilder 2007 Product Tour November 2006 JBuilder 2007 Product Tour November 2006 Introduction... 3 Eclipse Overview... 4 JBuilder 2007 Overview... 4 ProjectAssist. 5 Graphical EJB Workbench... 6 TeamInsight..7 Conclusion... 10 2 Introduction

More information

Java FX. Threads, Workers and Tasks

Java FX. Threads, Workers and Tasks Java FX Threads, Workers and Tasks Threads and related topics Lecture Overview...but first lets take a look at a good example of Model - View - Controler set up This and most of the lecture is taken from

More information

Eclipse Lyo Overview. Michael Fiedler, Eclipse Lyo committer IBM Corporation

Eclipse Lyo Overview. Michael Fiedler, Eclipse Lyo committer IBM Corporation Eclipse Lyo Overview http://eclipse.org/lyo Michael Fiedler, Eclipse Lyo committer 1 Agenda Eclipse Lyo background Content and Plans Test Suites OSLC4J Samples Next Steps 2 OSLC Specifications OSLC Core

More information

For detailed technical instructions refer to the documentation provided inside the SDK and updated samples.

For detailed technical instructions refer to the documentation provided inside the SDK and updated samples. The vsphere HTML Client SDK Fling provides libraries, sample plug-ins, documentation and various SDK tools to help you develop and build user interface extensions which are compatible with both vsphere

More information

Java EE 6: Develop Web Applications with JSF

Java EE 6: Develop Web Applications with JSF Oracle University Contact Us: +966 1 1 2739 894 Java EE 6: Develop Web Applications with JSF Duration: 4 Days What you will learn JavaServer Faces technology, the server-side component framework designed

More information

Marthon User Guide. Page 1 Copyright The Marathon developers. All rights reserved.

Marthon User Guide. Page 1 Copyright The Marathon developers. All rights reserved. 1. Overview Marathon is a general purpose tool for both running and authoring acceptance tests geared at the applications developed using Java and Swing. Included with marathon is a rich suite of components

More information

QMS ISO 9001:2015 CERTIFIED COMPANY Software Testing TRAINING.

QMS ISO 9001:2015 CERTIFIED COMPANY Software Testing TRAINING. QMS ISO 9001:2015 CERTIFIED COMPANY Software Testing TRAINING www.webliquidinfotech.com What you Learn: What is Software Testing? Why Testing is Important? Scope of Software Testing Objectives of Software

More information

Software Engineering Design & Construction

Software Engineering Design & Construction Winter Semester 17/18 Software Engineering Design & Construction Dr. Michael Eichberg Fachgebiet Softwaretechnik Technische Universität Darmstadt A Critical View on Inheritance 2 A Critical View On Inheritance

More information