SlideShare a Scribd company logo
1 of 22
Download to read offline
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 2008Marco Brambilla
 
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 Frontendsandrejusb
 
Sid K
Sid KSid K
Sid KSid K
 
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 iterationsKarthik 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 EclipseMarkus 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 classLibbySchulze
 
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
 
Moving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETMoving to Microsoft Visual Basic .NET
Moving to Microsoft Visual Basic .NETV Sanchez
 
Multi Team Architecture
Multi Team ArchitectureMulti Team Architecture
Multi Team ArchitectureSigma 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 AspectJ and GUI form generators demo

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.1Rodolfo Finochietti
 
Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019Mikhail Kuznetcov
 
ALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineALT-F1 Techtalk 3 - Google AppEngine
ALT-F1 Techtalk 3 - Google AppEngineAbdelkrim Boujraf
 
Serverless Computing with Azure
Serverless Computing with AzureServerless Computing with Azure
Serverless Computing with AzureAnalben 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 OverviewWill 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 IDEMarkus 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
 
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 2009Jaime Cid
 

Similar to AspectJ and GUI form generators demo (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

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

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

AspectJ and GUI form generators demo

  • 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