This document discusses experimenting with architecting web applications without using GWT-User. It recommends removing GWT-User from dependencies, avoiding JSNI and widgets in favor of JsInterop and Polymer, not using IDE plugins, and avoiding GWT RPC. It demonstrates this approach by developing WUnit, a unit testing framework for the game Warhammer. WUnit is implemented with a Java engine and model, and a frontend using GWT, Polymer, and JsInterop. This allows the code to be reused across platforms like web, Android, and iOS. The document discusses challenges encountered and open issues, and calls on the GWT steering committee to create more modular libraries to support this approach.
Taking Your GWT App to Tablets with GXT 4.0David Chandler
Sencha GXT builds on the open source GWT compiler to enable Java developers to build complex desktop-like user interfaces that run in the browser. In GXT 4.0, the core widgets have been updated to include touch functionality such as draggable borders, tree expand / collapse, LiveGrid scrolling, and long press to hover. In addition, you can add new gesture recognizers such as pinch and rotate to your apps. In this presentation, we look at the ins and outs of JavaScript touch event handling for GWT developers, touch support in GXT 4.0 widgets, how to eliminate the 300ms click delay in mobile browsers, and how to work with GXT’s new gesture recognizers. In addition, we look at some of the lessons learned by the GXT team while building GXT 4.0 and demo some debugging strategies for GWT apps on touch devices.
GWTcon 2015 - Best development practices for GWT web applications Arcbees
Best development practices for GWT web applications
Conference by Christian Goudreau, at GWT Con 2015.
Christian Goudreau is BEE-EO AND CO-FOUNDER
at Arcbees.
You can follow Christian on Twitter : @imchrisgoudreau
The new polymer ecosystem makes really easy to share UI components between developers. Let's GWT take advantage of the JS ecosystem to create amazing UIs.
GWTcon Florence 2015
Taking Your GWT App to Tablets with GXT 4.0David Chandler
Sencha GXT builds on the open source GWT compiler to enable Java developers to build complex desktop-like user interfaces that run in the browser. In GXT 4.0, the core widgets have been updated to include touch functionality such as draggable borders, tree expand / collapse, LiveGrid scrolling, and long press to hover. In addition, you can add new gesture recognizers such as pinch and rotate to your apps. In this presentation, we look at the ins and outs of JavaScript touch event handling for GWT developers, touch support in GXT 4.0 widgets, how to eliminate the 300ms click delay in mobile browsers, and how to work with GXT’s new gesture recognizers. In addition, we look at some of the lessons learned by the GXT team while building GXT 4.0 and demo some debugging strategies for GWT apps on touch devices.
GWTcon 2015 - Best development practices for GWT web applications Arcbees
Best development practices for GWT web applications
Conference by Christian Goudreau, at GWT Con 2015.
Christian Goudreau is BEE-EO AND CO-FOUNDER
at Arcbees.
You can follow Christian on Twitter : @imchrisgoudreau
The new polymer ecosystem makes really easy to share UI components between developers. Let's GWT take advantage of the JS ecosystem to create amazing UIs.
GWTcon Florence 2015
React is a UI library developed at Facebook to facilitate the creation of interactive, stateful & reusable UI components. It is used at Facebook in production, and Instagram.com is written entirely in React.
GwtQuery is a rewrite of the jQuery popular library with has brought to the GWT world its sexy API and its simplicity for doing complex things.
In this session Manuel will provide an overview of the fundamentals of gQuery, how to setup and use it, and how to write code which being laborious in GWT can be simplified using gQuery.
With the release of React 18 we finally get the long awaited concurrent rendering. But how is that going to affect your application? What are the benefits of concurrent rendering in React? What do you need to do to switch to concurrent rendering when you upgrade to React 18? And what if you don’t want or can’t use concurrent rendering yet?
There are some behavior changes you need to be aware of! In this workshop we will cover all of those subjects and more.
Join me with your laptop in this interactive workshop. You will see how easy it is to switch to concurrent rendering in your React application. You will learn all about concurrent rendering, SuspenseList, the startTransition API and more.
https://reactadvanced.com/workshops-3h
What's New in JHipsterLand - Devoxx Poland 2017Matt Raible
JHipster is an application generator that allows you to create monoliths or microservices, based on Spring Boot and Angular. It leverages Spring Cloud for microservices and contains best-of-breed JavaScript and CSS libraries for creating your UI. In this session, you’ll learn about what’s new in JHipster. Topics include Angular 4, Progressive Web Apps, HTTP/2, JUnit 5 and Spring 5.
Monolith Demo: https://github.com/mraible/jhipster4-demo/blob/master/README.adoc
Microservices Demo: https://developer.okta.com/blog/2017/06/20/develop-microservices-with-jhipster
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav DukhinFwdays
Is it possible to write a program that significantly changes its behaviour during the runtime without changing its source code? Have you ever wondered about native TypeScript support in Node.js? Or whether it is possible to write JavaScript code that syntactically feels a lot different but is still valid? The answers to these and a lot of other questions will be discussed in detail in this talk. From the basics of metaprogramming theory to practical examples of its application in enterprise projects. We are going to talk about metalinguistic abstractions, domain-specific languages, and how they can help us solve software engineering problems. We will take a look at how popular frameworks and libraries like React.js, Express.js, Nest.js and Lodash use metaprogramming to develop systems that are used worldwide. Moreover, we will learn how to think in terms of metaprograms and broaden our outlook towards the great world of metasystems.
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?Iván López Martín
Spring Boot allows the creation of Spring Framework based applications in a quick and easy way without any XML configuration. It does not generate code, but provides useful defaults and an opinionated approach to the configuration but it quickly gets out of the way when we want to change and override the configuration. As if this wasn't enough we can also create production-ready applications with features such as metrics, health checks and externalized configuration.
If you add Groovy you have the perfect combination to speed up your development and have fun while developing.
In this talk you will see introductory examples of Spring Boot, the creation of a small RESTful API, the usage of Websockets, some of the Spring Boot CLI goodness... and many more examples!
Front End Development for Back End Developers - UberConf 2017Matt Raible
Are you a backend developer that’s being pushed into front end development? Are you frustrated with all JavaScript frameworks and build tools you have to learn to be a good UI developer? If so, this session is for you! We’ll explore the tools of the trade for frontend development (npm, yarn, Gulp, Webpack, Yeoman) and learn the basics of HTML, CSS, and JavaScript.
This presentation dives into the intricacies of Bootstrap, Material Design, ES6, and TypeScript. Finally, after getting you up to speed with all this new tech, I'll show how it can all be found and integrated through the fine and dandy JHipster project.
Quick overview of building plugins using pure JavaScript or Google Web Toolkit (GWT), and a group discussion to identify important UI extension points for Gerrit contributors to make available.
React is a UI library developed at Facebook to facilitate the creation of interactive, stateful & reusable UI components. It is used at Facebook in production, and Instagram.com is written entirely in React.
GwtQuery is a rewrite of the jQuery popular library with has brought to the GWT world its sexy API and its simplicity for doing complex things.
In this session Manuel will provide an overview of the fundamentals of gQuery, how to setup and use it, and how to write code which being laborious in GWT can be simplified using gQuery.
With the release of React 18 we finally get the long awaited concurrent rendering. But how is that going to affect your application? What are the benefits of concurrent rendering in React? What do you need to do to switch to concurrent rendering when you upgrade to React 18? And what if you don’t want or can’t use concurrent rendering yet?
There are some behavior changes you need to be aware of! In this workshop we will cover all of those subjects and more.
Join me with your laptop in this interactive workshop. You will see how easy it is to switch to concurrent rendering in your React application. You will learn all about concurrent rendering, SuspenseList, the startTransition API and more.
https://reactadvanced.com/workshops-3h
What's New in JHipsterLand - Devoxx Poland 2017Matt Raible
JHipster is an application generator that allows you to create monoliths or microservices, based on Spring Boot and Angular. It leverages Spring Cloud for microservices and contains best-of-breed JavaScript and CSS libraries for creating your UI. In this session, you’ll learn about what’s new in JHipster. Topics include Angular 4, Progressive Web Apps, HTTP/2, JUnit 5 and Spring 5.
Monolith Demo: https://github.com/mraible/jhipster4-demo/blob/master/README.adoc
Microservices Demo: https://developer.okta.com/blog/2017/06/20/develop-microservices-with-jhipster
"Applied Enterprise Metaprogramming in JavaScript", Vladyslav DukhinFwdays
Is it possible to write a program that significantly changes its behaviour during the runtime without changing its source code? Have you ever wondered about native TypeScript support in Node.js? Or whether it is possible to write JavaScript code that syntactically feels a lot different but is still valid? The answers to these and a lot of other questions will be discussed in detail in this talk. From the basics of metaprogramming theory to practical examples of its application in enterprise projects. We are going to talk about metalinguistic abstractions, domain-specific languages, and how they can help us solve software engineering problems. We will take a look at how popular frameworks and libraries like React.js, Express.js, Nest.js and Lodash use metaprogramming to develop systems that are used worldwide. Moreover, we will learn how to think in terms of metaprograms and broaden our outlook towards the great world of metasystems.
GR8Conf 2015 - Spring Boot and Groovy. What more do you need?Iván López Martín
Spring Boot allows the creation of Spring Framework based applications in a quick and easy way without any XML configuration. It does not generate code, but provides useful defaults and an opinionated approach to the configuration but it quickly gets out of the way when we want to change and override the configuration. As if this wasn't enough we can also create production-ready applications with features such as metrics, health checks and externalized configuration.
If you add Groovy you have the perfect combination to speed up your development and have fun while developing.
In this talk you will see introductory examples of Spring Boot, the creation of a small RESTful API, the usage of Websockets, some of the Spring Boot CLI goodness... and many more examples!
Front End Development for Back End Developers - UberConf 2017Matt Raible
Are you a backend developer that’s being pushed into front end development? Are you frustrated with all JavaScript frameworks and build tools you have to learn to be a good UI developer? If so, this session is for you! We’ll explore the tools of the trade for frontend development (npm, yarn, Gulp, Webpack, Yeoman) and learn the basics of HTML, CSS, and JavaScript.
This presentation dives into the intricacies of Bootstrap, Material Design, ES6, and TypeScript. Finally, after getting you up to speed with all this new tech, I'll show how it can all be found and integrated through the fine and dandy JHipster project.
Quick overview of building plugins using pure JavaScript or Google Web Toolkit (GWT), and a group discussion to identify important UI extension points for Gerrit contributors to make available.
This presentation has been prepared by Oleksii Prohonnyi for internal Angular.js training to improve skills of newbies in JS/Angular.
Part 1 (Introduction): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-1-introduction
Part 2 (Architecture): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-2-architecture
Part 3 (Performance): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-3-performance
Part 4 (Angular 2.0): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-4-angular-20
My introductory presentation of Google Web Toolkit at Google IO Extended in Pordenone. What is GWT, what you can do with it. What are pros and cons of this toolkit.
Node.js is a powerful JavaScript platform that helps you build server applications. It has become a popular option for building network applications and web servers. Explore how Node.js interacts with the multitude of add-on open source modules to build a modern web application in no time.
Gradle is an open-source build automation tool focused on flexibility, build reproducibility and performance. Over the years, this tool has evolved and introduced new concepts and features around dependency management, publication and other aspects on build and release of artifacts for the Java platform.
Keeping up to date with all these features across several projects can be challenging. How do you make sure that all your projects can be upgraded to the latest version of Gradle? What if you have thousands of projects and hundreds of engineers? How can you abstract common tasks for them and make sure that new releases work as expected?
At Netflix, we built Nebula, a collection of Gradle plugins that helps engineers remove boilerplate in Gradle build files, and makes building software the Netflix way easy. This reduces the cognitive load on developers, allowing them to focus on writing code.
In this talk, I’ll share with you our philosophy on how to build JVM artifacts and the pieces that help us boost the productivity of engineers at Netflix. I’ll talk about:
- What is Nebula
- What are the common problems we face and try to solve
- How we distribute it to every JVM engineer
- How we ensure that Nebula/Gradle changes do not break builds so we can ship new features with confidence at Netflix
Micronaut: A new way to build microservicesLuram Archanjo
Over the years microservices architecture has been widely adopted in conjunction with Spring Boot. But recently, we are witnessing the rise of microframeworks such as Micronaut, which has innovated the way we build microservices by providing low memory consumption, fast startup, non-blocking, and other important features that I will demonstrate and conceptualize in this talk.
0x01 - Newton's Third Law: Static vs. Dynamic AbusersOWASP Beja
f you offer a service on the web, odds are that someone will abuse it. Be it an API, a SaaS, a PaaS, or even a static website, someone somewhere will try to figure out a way to use it to their own needs. In this talk we'll compare measures that are effective against static attackers and how to battle a dynamic attacker who adapts to your counter-measures.
About the Speaker
===============
Diogo Sousa, Engineering Manager @ Canonical
An opinionated individual with an interest in cryptography and its intersection with secure software development.
This presentation, created by Syed Faiz ul Hassan, explores the profound influence of media on public perception and behavior. It delves into the evolution of media from oral traditions to modern digital and social media platforms. Key topics include the role of media in information propagation, socialization, crisis awareness, globalization, and education. The presentation also examines media influence through agenda setting, propaganda, and manipulative techniques used by advertisers and marketers. Furthermore, it highlights the impact of surveillance enabled by media technologies on personal behavior and preferences. Through this comprehensive overview, the presentation aims to shed light on how media shapes collective consciousness and public opinion.
Have you ever wondered how search works while visiting an e-commerce site, internal website, or searching through other types of online resources? Look no further than this informative session on the ways that taxonomies help end-users navigate the internet! Hear from taxonomists and other information professionals who have first-hand experience creating and working with taxonomies that aid in navigation, search, and discovery across a range of disciplines.
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Orkestra
UIIN Conference, Madrid, 27-29 May 2024
James Wilson, Orkestra and Deusto Business School
Emily Wise, Lund University
Madeline Smith, The Glasgow School of Art
Acorn Recovery: Restore IT infra within minutesIP ServerOne
Introducing Acorn Recovery as a Service, a simple, fast, and secure managed disaster recovery (DRaaS) by IP ServerOne. A DR solution that helps restore your IT infra within minutes.
This presentation by Morris Kleiner (University of Minnesota), was made during the discussion “Competition and Regulation in Professions and Occupations” held at the Working Party No. 2 on Competition and Regulation on 10 June 2024. More papers and presentations on the topic can be found out at oe.cd/crps.
This presentation was uploaded with the author’s consent.
10. No, I want to reuse Java in Web
Applications, mobile platforms and off-
course in the Java Backend
STOP USING GWT?
11. 1st. remove GWT-User from dependencies
2nd. don’t use JSNI, use JsInterop
3rd. don’t use Widgets, use Polymer
4th. don’t use IDE plugins*
5th. don’t use GWT RPC
Experiments Checklist:
12. 1st. remove GWT-User from dependencies
2nd. don’t use JSNI, use JsInterop
3rd. don’t use Widgets, use Polymer
4th. don’t use IDE plugins*
5th. don’t use GWT RPC
LET’S PUT IT INTO PRACTICE
Experiments Checklist:
23. AT FIRST WUNIT IS BORN WITH THIS ARCHITECTURE
CONSOLE ENGINE MODEL
POJOJavaSystem.out
24. THE VALUE OF USING JAVA TO IMPLEMENT THE GAME LOGIC
ENGINE
Java
This code is so much complex
(Warhammer rules are so) that I wouldn’t
attempt to write it without a full OOP
language with solid development tools
25. THE VALUE OF USING JAVA TO IMPLEMENT THE GAME LOGIC
ENGINE
Java
This code is so much complex
(Warhammer rules are so) that I wouldn’t
attempt to write it without a full OOP
language with solid development tools
26. THE VALUE OF USING JAVA TO IMPLEMENT THE GAME LOGIC
ENGINE
Java
This code is so much complex
(Warhammer rules are so) that I wouldn’t
attempt to write it without a full OOP
language with solid development tools
27. THE VALUE OF USING JAVA TO IMPLEMENT THE GAME LOGIC
ENGINE
Java
This code is so much complex
(Warhammer rules are so) that I wouldn’t
attempt to write it without a full OOP
language with solid development tools
28. WUnit’s Engine is implemented in Java
Developed with strong TDD
(coverage is about 93.6%)
REUSE - REUSE - REUSE
30. …AND THEN I WANTED TO TO BUILD
AN USER INTERFACE FOR WUNIT:
HOW DID I DID IT?
(Singular not available)
31. HOW TO USE GWT
AND NOT GWT-USER
(Experiments made with WUnit prototype)
32. ARCHITECTING WEB APPLICATIONS FOR REUSE
VIEW
INPUT
PRESENTER ENGINE MODEL
VIEW
OUTPUT
written with
POJO
written in (pure)
Java
written in
GWT/JS
written in
Polymer
Note: Engine and Model are compiled
to Javascript and run on the browser
thanks to javaemul !
34. …but it comes the first failure!
JsInterop annotations and EntryPoint interface are inside GWT-user.
REMOVE GWT-USER FROM DEPENDENCIES
1st
35. …but it comes the first failure!
JsInterop annotations and EntryPoint interface are inside GWT-user.
Then, just avoid using anything else from GWT-user…
REMOVE GWT-USER FROM DEPENDENCIES
1st
37. -- TO GWT STEERING COMMITTEE --
please create an independent library
with EntryPoint and JsInterop interfaces
so we can remove GWT-User from dependencies
51. LINK FROM GWT TO HOST PAGE
Fail! I had to use JSNI (but it is limited to invoking query selector from Java,
and it can be rewritten with the new JsInterop)
61. -- TO GWT STEERING COMMITTEE --
please make Code Server more modular and reusable so we
can use it this approach without hacks
62. This problem is not solved yet
(WUnit don't uses client-server communication)
Work in progress
It would be possible to implement a clean approach if GWT was supporting GSON or
if the javaemul was supporting (a more rich subset of) Java Reflection
DON'T USE GWT RPC
5th
63. -- TO GWT STEERING COMMITTEE --
please create an independent and modular library
with the javaemul, so it can be extended in a clean way