SlideShare a Scribd company logo
1 of 37
Download to read offline
Catching-up web
technologies - an endless
story
Cleber Jorge Amaral
Supervised by Professor Stephen Cranefield and Jomi Fred Hubner
nzdis meeting of 13th February 2020
Background: JaCaMo, a platform for developing
Multiagent Systems
Room2Room1
a company
Organisation
Environment
Agents
My Background
● Good knowledge on C, C++, and some knowledge on programming
non-visual Java applications
● No experience with web applications
How it started...
I was presented to
jacamo-web:
● REST endpoints
for JaCaMo
facilities
● Web Interface
for programming
Multiagent
Systems
This was the agents
interface when I was
presented to it
Interface to send new
plans to an agent
(which is a way to
“teach” an agent)
Interface for the
directory facilitator (a
way to know which
services each agent
can provide)
Interface for
inspecting an artifact
and its complex way
to show details
Roadmap:
● Improve the User Interface (UI)
Source: https://www.vebo.pl/kurs-ux-ui-sztuka-uzytecznego-projektowania
In short… HTML, CSS and JS
Source: https://moz.com/blog/javascript-seo, originally from https://img0.etsystatic.com/000/0/6007442/il_fullxfull.281148222.jpg,
http://i.ebayimg.com/00/s/NTAwWDQ1Mg==/z/0FYAAOxyRhBS-qzb/$_3.JPG?set_id=2 and https://imgur.com/hjRn2ZM
CSS in one slide
● Cascading Style Sheets describes how HTML will be displayed
● Basic structure:
● Selectors:
● DEMO: https://www.w3schools.com/css/css_intro.asp
CSS framework?
bootstrap
Chosen CSS framework
● Lightweight
● Has a clear
example to base
our app
But...
● It is not very
flexible
○ No frames
○ Few modal
options
○ Nothing to
handle instant
messages
○ ...
So… adapting mini.css and creating an endpoint to
return CSSs
/* Modal Header */
.modal-header {
padding: 2px 16px;
background-color:
var(--header-fore-color);
color: white;
}
...
@Path("/css/{resourcepathfile}" )
@GET
@Produces("text/css")
public Response getStyleCSS(@PathParam("reso... {
StringBuilder so = new StringBuilder();
try {
BufferedReader in = null;
File f = new File("src/resources/css/" + ...);
if (f.exists()) {
in = new BufferedReader( new FileReader(f));
...
return Response.ok(so.toString(), "te...;
}
}
Agent’s mind before and after
But we are writing HTML as Java coded Strings
Everytime we need to change any HTML we have to compile the entire
project and the project is getting bigger!
Agent’s mind in previous version was written in 50 lines, including the JS
https://github.com/jacamo-lang/jacamo-rest/blob/ea5a673e2c8accb8a541d24
88c279e05d4b9ccf9/src/java/jacamo/web/RestImplAg.java#L166
The new version was written in 120 lines of HTML. (JS and CSS was put
apart!!!)
https://github.com/jacamo-lang/jacamo-rest/blob/e227d83eac560bd98a8f2dc3
34f2d0c71a822d63/src/java/jacamo/web/RestImplAg.java#L294
Roadmap:
● [done] Improve the UX
● Split front from backend
○ For more
productivity when
developing new
features
Source: http://apexensino.com.br/front-end-back-end-e-fullstack-voce-sabe-o-que-faz-cada-um-destes-profissionais/
Understanding the problem
jacamo-web
css js
Client
HTTP
request
HTTP
response
html
Bad way:
- Low
productivity
- Not good
separation of
concerns
jacamo-web
Better way:
- Standard
- More
productivity
- Good frontend
frameworks html css
Client
HTTP
request
HTTP
response
js
Front and
backend as
a
monoblock
Backend
Frontend
Architecture
Frontend and Backend in one slide
● Backend is the part of an application that runs in the server-side managing
requests from clients
○ Usually we have a server (a machine), an application (e.g. jacamo-web
provided by some web containers manager) and a database (a SGDB or
files)
● Frontend runs in client-side, it is concerned with the way the user interacts
with the application
Backend technology?
Chosen backend technology
● JaCaMo, the “core” of our
application is written in java
● Current version is already in
Java
Java backend framework?
Chosen Java backend framework
● No framework, using
primitive libraries
● Strengths:
○ Better to understand
what happens behind
scenes
○ It is currently working
for jacamo-web
● Weaknesses:
○ You have to solve each
problem by your own
○ Jersey lacks support to
some technologies like
websockets
○ Jersey is not being
updated very often
Frontend technology?
Chosen frontend technology
● No framework, using plain
JavaScript
● Strengths:
○ Better to understand what
happens behind scenes
○ It is currently working for
jacamo-web
● Weaknesses:
○ You have to solve each
problem by your own
○ Clients does not support
modules
○ Hard to make things
reusable
Roadmap:
● [done] Improve the UX
● [done] Split front from backend
● Improve productivity on
programming JavaScript
Source: https://forestry.io/blog/write-better-javascript-with-webpack/
JS on designing and JS on client-side?
Chosen module bundler
● No particular reason
Web service architecture?
Chose Architecture
● We already have endpoints
using REST
● Strengths:
○ Most common, everybody
loves it!
● Weaknesses:
○ Not easy to customise
○ Not good to deal with
different kind of clients
(desktop, mobile...)
REST in one slide
● Representational state transfer is an architecture that defines constraints on
designing web services
● RESTful: Services that model elements as resources, use HTTP verbs (GET,
POST, DELETE,...) and can be “discovered” by consumers
Source: https://terasolunaorg.github.io/guideline/1.0.x/en/ArchitectureInDetail/REST.html
But...
● REST has its problems, e.g.,
rendering the envir. menu
○ It show all workspaces,
and also the artifacts of
the selected workspace.
● Two solutions:
○ multiple asynchronous
calls which can be slow
○ create a new endpoint
which pushes a need to
change the back
● And if we want to make a
lightweight mobile app using
less data, so we have to
create a kind of “/mobile_api”
adding each wanted
endpoint?
https://app.swaggerhub.com/apis/sma-das/jacamo-rest/0.3
Roadmap:
● [done] Improve the UX
● [done] Split front from backend
● [done] Improve productivity on JS
● Look for a more flexible architecture
● Develop the frontend using some
framework for better productivity and
support
● Develop the backend using some
java framework for better
productivity and support
● Add more unit tests and mock tests
Source: https://www.thedigitaltransformationpeople.com/channels/people-and-change/give-it-up-productivity-and-engagement/
Our planned stack
● React since it has a strong
community, it is good to develop for
multiple platforms and it seems to
provide a good model with reusable
components.
● GraphQL since it allows clients to tell
what they need avoiding necessity of
multiple asynchronous calls and
sending unnecessary data.
● Spring because of its strong
community. Spring boot makes
easier application setup and
dependencies management.
What you think about our technology stack?
Questions?
Thanks for
coming
and for your
participation!
Jacamo-web is an open source project available at:
https://github.com/jacamo-lang/jacamo-web
A demo is running at:
http://jacamo-web.herokuapp.com/

More Related Content

Similar to Catching-up web technologies - an endless story

JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeRadosław Scheibinger
 
Developing For The Web
Developing For The WebDeveloping For The Web
Developing For The Webaleemb
 
On component interface
On component interfaceOn component interface
On component interfaceLaurence Chen
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development Shean McManus
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceMozaic Works
 
Big rewrites without big risks
Big rewrites without big risksBig rewrites without big risks
Big rewrites without big risksFlavius Stef
 
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)ITCamp
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerSuresh Patidar
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)patrick.t.joyce
 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application developmentzonathen
 

Similar to Catching-up web technologies - an endless story (20)

JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Web summit.pptx
Web summit.pptxWeb summit.pptx
Web summit.pptx
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
 
Developing For The Web
Developing For The WebDeveloping For The Web
Developing For The Web
 
On component interface
On component interfaceOn component interface
On component interface
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Karim mahmoud cv
Karim mahmoud cvKarim mahmoud cv
Karim mahmoud cv
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
 
Big rewrites without big risks
Big rewrites without big risksBig rewrites without big risks
Big rewrites without big risks
 
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
 
micro-frontends-with-vuejs
micro-frontends-with-vuejsmicro-frontends-with-vuejs
micro-frontends-with-vuejs
 
Developing high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web workerDeveloping high performance and responsive web apps using web worker
Developing high performance and responsive web apps using web worker
 
Dust.js
Dust.jsDust.js
Dust.js
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
 
Node.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniquesNode.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniques
 
sushant
sushantsushant
sushant
 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application development
 

More from Cleber Jorge Amaral

Test Driven Development for Agents - Tutorial
Test Driven Development for Agents - TutorialTest Driven Development for Agents - Tutorial
Test Driven Development for Agents - TutorialCleber Jorge Amaral
 
Interactive and collaborative programming of intereoperable agents using jaca...
Interactive and collaborative programming of intereoperable agents using jaca...Interactive and collaborative programming of intereoperable agents using jaca...
Interactive and collaborative programming of intereoperable agents using jaca...Cleber Jorge Amaral
 
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...Cleber Jorge Amaral
 
AI for Multi-Agent Programming Contest 2020
AI for Multi-Agent Programming Contest 2020AI for Multi-Agent Programming Contest 2020
AI for Multi-Agent Programming Contest 2020Cleber Jorge Amaral
 
CS&IS meeting-jacamo-web for collaborative and interactive programming
CS&IS meeting-jacamo-web for collaborative and interactive programmingCS&IS meeting-jacamo-web for collaborative and interactive programming
CS&IS meeting-jacamo-web for collaborative and interactive programmingCleber Jorge Amaral
 
Doctoral Proposal - From goals to organisations: automated organisation gener...
Doctoral Proposal - From goals to organisations: automated organisation gener...Doctoral Proposal - From goals to organisations: automated organisation gener...
Doctoral Proposal - From goals to organisations: automated organisation gener...Cleber Jorge Amaral
 
Jacamo web is on the fly: an interactive multi-agent systems programming envi...
Jacamo web is on the fly: an interactive multi-agent systems programming envi...Jacamo web is on the fly: an interactive multi-agent systems programming envi...
Jacamo web is on the fly: an interactive multi-agent systems programming envi...Cleber Jorge Amaral
 

More from Cleber Jorge Amaral (8)

Test Driven Development for Agents - Tutorial
Test Driven Development for Agents - TutorialTest Driven Development for Agents - Tutorial
Test Driven Development for Agents - Tutorial
 
Interactive and collaborative programming of intereoperable agents using jaca...
Interactive and collaborative programming of intereoperable agents using jaca...Interactive and collaborative programming of intereoperable agents using jaca...
Interactive and collaborative programming of intereoperable agents using jaca...
 
Jason code testing framework
Jason code testing frameworkJason code testing framework
Jason code testing framework
 
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...
Towards Jacamo-rest: A Resource-Oriented Abstraction for Managing Multi-Agent...
 
AI for Multi-Agent Programming Contest 2020
AI for Multi-Agent Programming Contest 2020AI for Multi-Agent Programming Contest 2020
AI for Multi-Agent Programming Contest 2020
 
CS&IS meeting-jacamo-web for collaborative and interactive programming
CS&IS meeting-jacamo-web for collaborative and interactive programmingCS&IS meeting-jacamo-web for collaborative and interactive programming
CS&IS meeting-jacamo-web for collaborative and interactive programming
 
Doctoral Proposal - From goals to organisations: automated organisation gener...
Doctoral Proposal - From goals to organisations: automated organisation gener...Doctoral Proposal - From goals to organisations: automated organisation gener...
Doctoral Proposal - From goals to organisations: automated organisation gener...
 
Jacamo web is on the fly: an interactive multi-agent systems programming envi...
Jacamo web is on the fly: an interactive multi-agent systems programming envi...Jacamo web is on the fly: an interactive multi-agent systems programming envi...
Jacamo web is on the fly: an interactive multi-agent systems programming envi...
 

Recently uploaded

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile EnvironmentVictorSzoltysek
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 

Recently uploaded (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 

Catching-up web technologies - an endless story

  • 1. Catching-up web technologies - an endless story Cleber Jorge Amaral Supervised by Professor Stephen Cranefield and Jomi Fred Hubner nzdis meeting of 13th February 2020
  • 2. Background: JaCaMo, a platform for developing Multiagent Systems Room2Room1 a company Organisation Environment Agents
  • 3. My Background ● Good knowledge on C, C++, and some knowledge on programming non-visual Java applications ● No experience with web applications
  • 4. How it started... I was presented to jacamo-web: ● REST endpoints for JaCaMo facilities ● Web Interface for programming Multiagent Systems This was the agents interface when I was presented to it
  • 5. Interface to send new plans to an agent (which is a way to “teach” an agent)
  • 6. Interface for the directory facilitator (a way to know which services each agent can provide)
  • 7. Interface for inspecting an artifact and its complex way to show details
  • 8. Roadmap: ● Improve the User Interface (UI) Source: https://www.vebo.pl/kurs-ux-ui-sztuka-uzytecznego-projektowania
  • 9. In short… HTML, CSS and JS Source: https://moz.com/blog/javascript-seo, originally from https://img0.etsystatic.com/000/0/6007442/il_fullxfull.281148222.jpg, http://i.ebayimg.com/00/s/NTAwWDQ1Mg==/z/0FYAAOxyRhBS-qzb/$_3.JPG?set_id=2 and https://imgur.com/hjRn2ZM
  • 10. CSS in one slide ● Cascading Style Sheets describes how HTML will be displayed ● Basic structure: ● Selectors: ● DEMO: https://www.w3schools.com/css/css_intro.asp
  • 12. Chosen CSS framework ● Lightweight ● Has a clear example to base our app
  • 13. But... ● It is not very flexible ○ No frames ○ Few modal options ○ Nothing to handle instant messages ○ ...
  • 14. So… adapting mini.css and creating an endpoint to return CSSs /* Modal Header */ .modal-header { padding: 2px 16px; background-color: var(--header-fore-color); color: white; } ... @Path("/css/{resourcepathfile}" ) @GET @Produces("text/css") public Response getStyleCSS(@PathParam("reso... { StringBuilder so = new StringBuilder(); try { BufferedReader in = null; File f = new File("src/resources/css/" + ...); if (f.exists()) { in = new BufferedReader( new FileReader(f)); ... return Response.ok(so.toString(), "te...; } }
  • 16. But we are writing HTML as Java coded Strings Everytime we need to change any HTML we have to compile the entire project and the project is getting bigger! Agent’s mind in previous version was written in 50 lines, including the JS https://github.com/jacamo-lang/jacamo-rest/blob/ea5a673e2c8accb8a541d24 88c279e05d4b9ccf9/src/java/jacamo/web/RestImplAg.java#L166 The new version was written in 120 lines of HTML. (JS and CSS was put apart!!!) https://github.com/jacamo-lang/jacamo-rest/blob/e227d83eac560bd98a8f2dc3 34f2d0c71a822d63/src/java/jacamo/web/RestImplAg.java#L294
  • 17. Roadmap: ● [done] Improve the UX ● Split front from backend ○ For more productivity when developing new features Source: http://apexensino.com.br/front-end-back-end-e-fullstack-voce-sabe-o-que-faz-cada-um-destes-profissionais/
  • 18. Understanding the problem jacamo-web css js Client HTTP request HTTP response html Bad way: - Low productivity - Not good separation of concerns jacamo-web Better way: - Standard - More productivity - Good frontend frameworks html css Client HTTP request HTTP response js Front and backend as a monoblock Backend Frontend Architecture
  • 19. Frontend and Backend in one slide ● Backend is the part of an application that runs in the server-side managing requests from clients ○ Usually we have a server (a machine), an application (e.g. jacamo-web provided by some web containers manager) and a database (a SGDB or files) ● Frontend runs in client-side, it is concerned with the way the user interacts with the application
  • 21. Chosen backend technology ● JaCaMo, the “core” of our application is written in java ● Current version is already in Java
  • 23. Chosen Java backend framework ● No framework, using primitive libraries ● Strengths: ○ Better to understand what happens behind scenes ○ It is currently working for jacamo-web ● Weaknesses: ○ You have to solve each problem by your own ○ Jersey lacks support to some technologies like websockets ○ Jersey is not being updated very often
  • 25. Chosen frontend technology ● No framework, using plain JavaScript ● Strengths: ○ Better to understand what happens behind scenes ○ It is currently working for jacamo-web ● Weaknesses: ○ You have to solve each problem by your own ○ Clients does not support modules ○ Hard to make things reusable
  • 26. Roadmap: ● [done] Improve the UX ● [done] Split front from backend ● Improve productivity on programming JavaScript Source: https://forestry.io/blog/write-better-javascript-with-webpack/
  • 27. JS on designing and JS on client-side?
  • 28. Chosen module bundler ● No particular reason
  • 30. Chose Architecture ● We already have endpoints using REST ● Strengths: ○ Most common, everybody loves it! ● Weaknesses: ○ Not easy to customise ○ Not good to deal with different kind of clients (desktop, mobile...)
  • 31. REST in one slide ● Representational state transfer is an architecture that defines constraints on designing web services ● RESTful: Services that model elements as resources, use HTTP verbs (GET, POST, DELETE,...) and can be “discovered” by consumers Source: https://terasolunaorg.github.io/guideline/1.0.x/en/ArchitectureInDetail/REST.html
  • 32. But... ● REST has its problems, e.g., rendering the envir. menu ○ It show all workspaces, and also the artifacts of the selected workspace. ● Two solutions: ○ multiple asynchronous calls which can be slow ○ create a new endpoint which pushes a need to change the back ● And if we want to make a lightweight mobile app using less data, so we have to create a kind of “/mobile_api” adding each wanted endpoint? https://app.swaggerhub.com/apis/sma-das/jacamo-rest/0.3
  • 33. Roadmap: ● [done] Improve the UX ● [done] Split front from backend ● [done] Improve productivity on JS ● Look for a more flexible architecture ● Develop the frontend using some framework for better productivity and support ● Develop the backend using some java framework for better productivity and support ● Add more unit tests and mock tests Source: https://www.thedigitaltransformationpeople.com/channels/people-and-change/give-it-up-productivity-and-engagement/
  • 34. Our planned stack ● React since it has a strong community, it is good to develop for multiple platforms and it seems to provide a good model with reusable components. ● GraphQL since it allows clients to tell what they need avoiding necessity of multiple asynchronous calls and sending unnecessary data. ● Spring because of its strong community. Spring boot makes easier application setup and dependencies management.
  • 35. What you think about our technology stack?
  • 37. Thanks for coming and for your participation! Jacamo-web is an open source project available at: https://github.com/jacamo-lang/jacamo-web A demo is running at: http://jacamo-web.herokuapp.com/