SlideShare a Scribd company logo
GP: AspectJ and GUI form
generators
Daniel Strmečki | Web and mobile developer
BUSINESS WEB APPLICATIONS10.05.2015.
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr2 | 10.05.2015.
Content
1. Generative programming (GP)
› Feature-oriented modelling
› Generic vs Generative programming
› Aspect-oriented programming (AspectJ)
› Template metaprogramming
› Generators
2. GUI form generators
› GUI form component based development
› GUI form generators design
3. Demo
› GUI form generators
› AspectJ
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr3 | 10.05.2015.
Generative programming (GP)
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr4 | 10.05.2015.
Feature-oriented modelling
Domain engineering goals
› Develop a common architecture for a system family
› Devise a production plan for family members
Software product lines goals
› Intensive systems share a common set of features, make use of it
› Increase the productivity and quality
› Reduce the development time, costs and complexity
Feature
› An important property of a concept instance
› Represents an reusable and configurable requirement
Feature modelling
› The creative activity of modelling the common and the variable
properties of concepts and their interdependencies
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr5 | 10.05.2015.
Feature-oriented modelling
Feature model
› Feature diagram + additional information
› Features organised in diagrams express the configurability aspects of
concepts
Figure copied from K. Czarnecki: Generative Programming, 1998.
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr6 | 10.05.2015.
Generic vs Generative programming
Generic programming
› Programming with generic parameters
› Programming by abstracting from concrete class
› Programming by parameterized components
Generative programming
› Generative – having the ability to originate, produce or procreate
Generic programming is focused on parameterization, whereas
Generative programming additionally deploys metaprogramming.
Generative programming also includes the process of creating
concrete instances of concepts.
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr7 | 10.05.2015.
Generic vs Generative programming
Generic parameters
› The goal is to avoid code duplication in statically typed languages
› Origin: STL library for C++
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr8 | 10.05.2015.
Aspect-oriented programming
AOP base idea
› Provide support in the programming language for defining aspects
along with the already present support for defining components
› An aspect is a common feature that is typically scattered across
methods, classes, object hierarchies, or even entire object models
› AOP focuses on crosscutting concerns (logging, access rights…)
› It allows aspects to be cleanly separated and placed into modules
that can be composed with other components
AspectJ
› Java implementation of AOP
› Aspect weavers operate by taking instructions specified by aspects,
known as advice, and distributing it throughout the various classes
in the program automatically (precompile)
› The place where a weaver inserts aspect code is called a
join point
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr9 | 10.05.2015.
Aspect-oriented programming
AspectJ
› Join points (pointcuts)
» method call
» method execution
» constructor call
» constructor execution
» field get
» field set
» pre-initialization
» initialization
» static initialization
» handler
» advice execution
„An aspect is not a something. It is a something about a something.”
(Highley, Lack, Myers)
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr10 | 10.05.2015.
Aspect-oriented programming
AspectJ
› Annotations
» @Annotation1
» !@Annotation1
» @Annotation1 @Annotation2
» @(Foo || Goo)
» @Annotation1 (hr.evolva.* || com.evolution_framework.*)
» @Annotation1 List hr.evolva..*.*
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr11 | 10.05.2015.
Aspect-oriented programming
AspectJ
› Errors and warnings
» declare error
» declare warning
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr12 | 10.05.2015.
Aspect-oriented programming
AspectJ
› Fields / variables
» get(* hr.evolva.gui.controls.GLabelFloat.value)
» set(* hr.evolva.gui.controls.GLabelEdit.text)
› Generics support
» call(* *.*(List<?>))
» execution(* C.*(List<? extends Number>))
› Variable parameters
» call(* hr.evolva.*.*(int, String...))
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr13 | 10.05.2015.
AspectJ
› Getting started
» Eclipse
» JARs
- aspectj-X.X.X.jar
- aspectjrt-X.X.X.jar
» AspectJ Development Tools
- https://eclipse.org/ajdt/
- http://download.eclipse.org/tools/ajdt/43/update
» Your project
- Configure -> Convert to AspectJ project
» Create your first Aspect
Aspect-oriented programming
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr14 | 10.05.2015.
Template metaprogramming
Metaprogramming refers to developing programs designed to
read, generate, analyse or transform other programs, and even
modify itself while running.
Template metaprogramming is a metaprogramming technique
in which templates are used to generate source code.
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr15 | 10.05.2015.
Generators
„A generator is a program that take a highel-lever specification
of a piece of software and produces its implementation”
(Czarnecki, Eisenecker)
Generator tasks
› Checks the validity of input specification
› Reports errors and warnings
› Completes the specification using the defaults
› Performs optimizations
› Generates the implementation
Generators that implement complex specification can become
complex themselves. In that case: modularize their design.
› Implement larger generators as a set of cooperating, smaller
generators
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr16 | 10.05.2015.
GUI form generators
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr17 | 10.05.2015.
GUI form component based development
Evolution Framework controls and wizards
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr18 | 10.05.2015.
GUI form generators design
"Programmers often spend time on GPL programming tasks
that are tedious and follow the same pattern." (M.Mernik)
Repetitive tasks
› View form
» Grid data (dates, integers, floating-point numbers…)
» Basic search
» Advanced search
» Add new record
» Delete selected
› Edit form
» Input fields (dates, integers, floating-point numbers…)
» Delete record
» Close form
» Save record
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr19 | 10.05.2015.
GUI form generators design
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr20 | 10.05.2015.
DEMO
GP: ASPECTJ AND GUI FORM GENERATORS
BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr21 | 10.05.2015.
Literature
› Czarnecki K.: Generative Programming - Principles and Techniques of
Software Engineering Based on Automated Configuration and Fragment
Based Component Models, PhD dissertation, 1998.
› Czarnecki K., U. Eisenecker: Generative Programming: Methods, Tools, and
Applications, Paperback, 2000.
› Eclipse: AspectJ official documentation, 2005.,
https://eclipse.org/aspectj/doc/released/adk15notebook/index.html
› Highley T.J., Lack M., Myers P.: Aspect Oriented Programming, Technical
Report, 1999.
› Kang K., Lee J., Donohoe P.: Feature-Oriented Product Line Engineering, IEEE
Software, 2002.
› Magdalenid I., Radoševic D., Orehovački T.: Autogenerator: Generation and
execution of programming code on demand, Expert Systems with
Applications, 2013.
› Mernik M.: When and how to develop domain-specific languages, ACM
Computing Surveys, 2005.
› Radoševid D., Magdalenid I: Source Code Generator Based on Dynamic
Frames, JIOS, 2011.
› Zhanga H., Jarzabek S.: XVCL: A Mechanism for Handling Variants in Software
Product Lines, Science of Computer Programming, 2004.
Thanks for your attention
www.evolva.hr
daniel.strmecki@evolva.hr
BUSINESS WEB APPLICATIONS

More Related Content

What's hot

WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008
Marco Brambilla
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
Technostacks Infotech Pvt. Ltd.
 
Microservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro FrontendsMicroservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro Frontends
andrejusb
 
Sid K
Sid KSid K
Sid KSid K
 
Metaworks4 intro
Metaworks4 introMetaworks4 intro
Metaworks4 intro
uEngine Solutions
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterations
Karthik Ramgopal
 
RapidClipse - Visual Low-Code IDE from Eclipse
RapidClipse - Visual Low-Code IDE from EclipseRapidClipse - Visual Low-Code IDE from Eclipse
RapidClipse - Visual Low-Code IDE from Eclipse
Markus Kett
 
RIA with Flex & PHP - Tulsa TechFest 2009
RIA with Flex & PHP  - Tulsa TechFest 2009RIA with Flex & PHP  - Tulsa TechFest 2009
RIA with Flex & PHP - Tulsa TechFest 2009Jason Ragsdale
 
Onion Architecture
Onion ArchitectureOnion Architecture
Onion Architecturematthidinger
 
Alexander Zeng
Alexander ZengAlexander Zeng
Alexander ZengAlex Zeng
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
LibbySchulze
 
A Designer's Intro to Oracle JET
A Designer's Intro to Oracle JETA Designer's Intro to Oracle JET
A Designer's Intro to Oracle JETLauren Beatty
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Moving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETMoving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NET
V Sanchez
 
Dineshotham Kumar Khambhammettu
Dineshotham Kumar KhambhammettuDineshotham Kumar Khambhammettu
Dineshotham Kumar Khambhammettu
Dineshotham Kumar Khambhammettu
 
Visual Studio 2013 Launch Keynote
Visual Studio 2013 Launch KeynoteVisual Studio 2013 Launch Keynote
Visual Studio 2013 Launch Keynote
Microsoft Visual Studio
 
Multi Team Architecture
Multi Team ArchitectureMulti Team Architecture
Multi Team Architecture
Sigma Software
 

What's hot (20)

WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
 
Microservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro FrontendsMicroservice Approach for Web Development with Micro Frontends
Microservice Approach for Web Development with Micro Frontends
 
Sid K
Sid KSid K
Sid K
 
Metaworks4 intro
Metaworks4 introMetaworks4 intro
Metaworks4 intro
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterations
 
RapidClipse - Visual Low-Code IDE from Eclipse
RapidClipse - Visual Low-Code IDE from EclipseRapidClipse - Visual Low-Code IDE from Eclipse
RapidClipse - Visual Low-Code IDE from Eclipse
 
RIA with Flex & PHP - Tulsa TechFest 2009
RIA with Flex & PHP  - Tulsa TechFest 2009RIA with Flex & PHP  - Tulsa TechFest 2009
RIA with Flex & PHP - Tulsa TechFest 2009
 
B.Karthik
B.KarthikB.Karthik
B.Karthik
 
Onion Architecture
Onion ArchitectureOnion Architecture
Onion Architecture
 
Alexander Zeng
Alexander ZengAlexander Zeng
Alexander Zeng
 
RAJESH MONGA
RAJESH MONGARAJESH MONGA
RAJESH MONGA
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
A Designer's Intro to Oracle JET
A Designer's Intro to Oracle JETA Designer's Intro to Oracle JET
A Designer's Intro to Oracle JET
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
 
Moving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETMoving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NET
 
C# 4.0 - Whats New
C# 4.0 - Whats NewC# 4.0 - Whats New
C# 4.0 - Whats New
 
Dineshotham Kumar Khambhammettu
Dineshotham Kumar KhambhammettuDineshotham Kumar Khambhammettu
Dineshotham Kumar Khambhammettu
 
Visual Studio 2013 Launch Keynote
Visual Studio 2013 Launch KeynoteVisual Studio 2013 Launch Keynote
Visual Studio 2013 Launch Keynote
 
Multi Team Architecture
Multi Team ArchitectureMulti Team Architecture
Multi Team Architecture
 

Similar to JavaCro'15 - GP GUI form generators - Daniel Strmečki

Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Rodolfo Finochietti
 
Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019
Mikhail Kuznetcov
 
ALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngine
Abdelkrim Boujraf
 
Serverless Computing with Azure
Serverless Computing with AzureServerless Computing with Azure
Serverless Computing with Azure
Analben Mehta
 
Manish_Goyal_July14_Internal
Manish_Goyal_July14_InternalManish_Goyal_July14_Internal
Manish_Goyal_July14_Internalmanish goyal
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL Overview
Will Smythe
 
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDESAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
Markus Van Kempen
 
Sanjeev_Kumar_Paul- Resume-Latest
Sanjeev_Kumar_Paul- Resume-LatestSanjeev_Kumar_Paul- Resume-Latest
Sanjeev_Kumar_Paul- Resume-LatestSanjeev Kumar Paul
 
Prateek's Updated Resume 2016
Prateek's Updated Resume 2016Prateek's Updated Resume 2016
Prateek's Updated Resume 2016Prateek Chaudhary
 
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
Andrew Ly
 
Kunal bhatia resume mass
Kunal bhatia   resume massKunal bhatia   resume mass
Kunal bhatia resume mass
Kunal Bhatia, MBA Candidate, BSc.
 
S Kumar Resume
S Kumar ResumeS Kumar Resume
S Kumar ResumeS Kumar
 
Oracle Fusion Development, May 2009
Oracle Fusion Development, May 2009Oracle Fusion Development, May 2009
Oracle Fusion Development, May 2009
Jaime Cid
 

Similar to JavaCro'15 - GP GUI form generators - Daniel Strmečki (20)

Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019
 
ALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngine
 
Serverless Computing with Azure
Serverless Computing with AzureServerless Computing with Azure
Serverless Computing with Azure
 
Manish_Goyal_July14_Internal
Manish_Goyal_July14_InternalManish_Goyal_July14_Internal
Manish_Goyal_July14_Internal
 
TedSeeberResume
TedSeeberResumeTedSeeberResume
TedSeeberResume
 
Manikanta_Chimata
Manikanta_ChimataManikanta_Chimata
Manikanta_Chimata
 
Capparelli, Carlos Eduardo
Capparelli, Carlos EduardoCapparelli, Carlos Eduardo
Capparelli, Carlos Eduardo
 
EGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL OverviewEGL Conference 2011 - EGL Overview
EGL Conference 2011 - EGL Overview
 
KhajavaliShaik
KhajavaliShaikKhajavaliShaik
KhajavaliShaik
 
Vishal Jadhav
Vishal JadhavVishal Jadhav
Vishal Jadhav
 
MAITRAYEE SAHA
MAITRAYEE SAHAMAITRAYEE SAHA
MAITRAYEE SAHA
 
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDESAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
 
Sanjeev_Kumar_Paul- Resume-Latest
Sanjeev_Kumar_Paul- Resume-LatestSanjeev_Kumar_Paul- Resume-Latest
Sanjeev_Kumar_Paul- Resume-Latest
 
Prateek's Updated Resume 2016
Prateek's Updated Resume 2016Prateek's Updated Resume 2016
Prateek's Updated Resume 2016
 
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
Summit Australia 2019 - PowerApps Component Framework (PCF) - Andrew Ly & Aun...
 
Kunal bhatia resume mass
Kunal bhatia   resume massKunal bhatia   resume mass
Kunal bhatia resume mass
 
Anuj Resume
Anuj ResumeAnuj Resume
Anuj Resume
 
S Kumar Resume
S Kumar ResumeS Kumar Resume
S Kumar Resume
 
Oracle Fusion Development, May 2009
Oracle Fusion Development, May 2009Oracle Fusion Development, May 2009
Oracle Fusion Development, May 2009
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

Recently uploaded

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

JavaCro'15 - GP GUI form generators - Daniel Strmečki

  • 1. GP: AspectJ and GUI form generators Daniel Strmečki | Web and mobile developer BUSINESS WEB APPLICATIONS10.05.2015.
  • 2. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr2 | 10.05.2015. Content 1. Generative programming (GP) › Feature-oriented modelling › Generic vs Generative programming › Aspect-oriented programming (AspectJ) › Template metaprogramming › Generators 2. GUI form generators › GUI form component based development › GUI form generators design 3. Demo › GUI form generators › AspectJ
  • 3. BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr3 | 10.05.2015. Generative programming (GP)
  • 4. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr4 | 10.05.2015. Feature-oriented modelling Domain engineering goals › Develop a common architecture for a system family › Devise a production plan for family members Software product lines goals › Intensive systems share a common set of features, make use of it › Increase the productivity and quality › Reduce the development time, costs and complexity Feature › An important property of a concept instance › Represents an reusable and configurable requirement Feature modelling › The creative activity of modelling the common and the variable properties of concepts and their interdependencies
  • 5. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr5 | 10.05.2015. Feature-oriented modelling Feature model › Feature diagram + additional information › Features organised in diagrams express the configurability aspects of concepts Figure copied from K. Czarnecki: Generative Programming, 1998.
  • 6. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr6 | 10.05.2015. Generic vs Generative programming Generic programming › Programming with generic parameters › Programming by abstracting from concrete class › Programming by parameterized components Generative programming › Generative – having the ability to originate, produce or procreate Generic programming is focused on parameterization, whereas Generative programming additionally deploys metaprogramming. Generative programming also includes the process of creating concrete instances of concepts.
  • 7. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr7 | 10.05.2015. Generic vs Generative programming Generic parameters › The goal is to avoid code duplication in statically typed languages › Origin: STL library for C++
  • 8. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr8 | 10.05.2015. Aspect-oriented programming AOP base idea › Provide support in the programming language for defining aspects along with the already present support for defining components › An aspect is a common feature that is typically scattered across methods, classes, object hierarchies, or even entire object models › AOP focuses on crosscutting concerns (logging, access rights…) › It allows aspects to be cleanly separated and placed into modules that can be composed with other components AspectJ › Java implementation of AOP › Aspect weavers operate by taking instructions specified by aspects, known as advice, and distributing it throughout the various classes in the program automatically (precompile) › The place where a weaver inserts aspect code is called a join point
  • 9. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr9 | 10.05.2015. Aspect-oriented programming AspectJ › Join points (pointcuts) » method call » method execution » constructor call » constructor execution » field get » field set » pre-initialization » initialization » static initialization » handler » advice execution „An aspect is not a something. It is a something about a something.” (Highley, Lack, Myers)
  • 10. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr10 | 10.05.2015. Aspect-oriented programming AspectJ › Annotations » @Annotation1 » !@Annotation1 » @Annotation1 @Annotation2 » @(Foo || Goo) » @Annotation1 (hr.evolva.* || com.evolution_framework.*) » @Annotation1 List hr.evolva..*.*
  • 11. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr11 | 10.05.2015. Aspect-oriented programming AspectJ › Errors and warnings » declare error » declare warning
  • 12. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr12 | 10.05.2015. Aspect-oriented programming AspectJ › Fields / variables » get(* hr.evolva.gui.controls.GLabelFloat.value) » set(* hr.evolva.gui.controls.GLabelEdit.text) › Generics support » call(* *.*(List<?>)) » execution(* C.*(List<? extends Number>)) › Variable parameters » call(* hr.evolva.*.*(int, String...))
  • 13. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr13 | 10.05.2015. AspectJ › Getting started » Eclipse » JARs - aspectj-X.X.X.jar - aspectjrt-X.X.X.jar » AspectJ Development Tools - https://eclipse.org/ajdt/ - http://download.eclipse.org/tools/ajdt/43/update » Your project - Configure -> Convert to AspectJ project » Create your first Aspect Aspect-oriented programming
  • 14. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr14 | 10.05.2015. Template metaprogramming Metaprogramming refers to developing programs designed to read, generate, analyse or transform other programs, and even modify itself while running. Template metaprogramming is a metaprogramming technique in which templates are used to generate source code.
  • 15. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr15 | 10.05.2015. Generators „A generator is a program that take a highel-lever specification of a piece of software and produces its implementation” (Czarnecki, Eisenecker) Generator tasks › Checks the validity of input specification › Reports errors and warnings › Completes the specification using the defaults › Performs optimizations › Generates the implementation Generators that implement complex specification can become complex themselves. In that case: modularize their design. › Implement larger generators as a set of cooperating, smaller generators
  • 16. BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr16 | 10.05.2015. GUI form generators
  • 17. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr17 | 10.05.2015. GUI form component based development Evolution Framework controls and wizards
  • 18. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr18 | 10.05.2015. GUI form generators design "Programmers often spend time on GPL programming tasks that are tedious and follow the same pattern." (M.Mernik) Repetitive tasks › View form » Grid data (dates, integers, floating-point numbers…) » Basic search » Advanced search » Add new record » Delete selected › Edit form » Input fields (dates, integers, floating-point numbers…) » Delete record » Close form » Save record
  • 19. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr19 | 10.05.2015. GUI form generators design
  • 20. BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr20 | 10.05.2015. DEMO
  • 21. GP: ASPECTJ AND GUI FORM GENERATORS BUSINESS WEB APPLICATIONS | info@evolva.hr | www.evolva.hr21 | 10.05.2015. Literature › Czarnecki K.: Generative Programming - Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment Based Component Models, PhD dissertation, 1998. › Czarnecki K., U. Eisenecker: Generative Programming: Methods, Tools, and Applications, Paperback, 2000. › Eclipse: AspectJ official documentation, 2005., https://eclipse.org/aspectj/doc/released/adk15notebook/index.html › Highley T.J., Lack M., Myers P.: Aspect Oriented Programming, Technical Report, 1999. › Kang K., Lee J., Donohoe P.: Feature-Oriented Product Line Engineering, IEEE Software, 2002. › Magdalenid I., Radoševic D., Orehovački T.: Autogenerator: Generation and execution of programming code on demand, Expert Systems with Applications, 2013. › Mernik M.: When and how to develop domain-specific languages, ACM Computing Surveys, 2005. › Radoševid D., Magdalenid I: Source Code Generator Based on Dynamic Frames, JIOS, 2011. › Zhanga H., Jarzabek S.: XVCL: A Mechanism for Handling Variants in Software Product Lines, Science of Computer Programming, 2004.
  • 22. Thanks for your attention www.evolva.hr daniel.strmecki@evolva.hr BUSINESS WEB APPLICATIONS