1) The document discusses deploying a Java MVVM sample application called ZkToDo2 to two Platform as a Service (PaaS) clouds: Heroku and Openshift.
2) The application uses ZK, Spring, and JPA with a relational database and follows the MVVM pattern. Data bindings in ZK allow the view to be updated automatically based on changes to the view model.
3) Maven build profiles are used to swap Spring configurations to deploy the same codebase to different platforms like JBoss or clouds. The document demonstrates committing changes locally and deploying to both clouds with a single command.
Writing simple web services in java using eclipse editorSantosh Kumar Kar
This is a simple steps showing how you can write a simple web service, host into a server, write a client class to access the service on web server. Just for a beginners...
AppSphere 15 - Microsoft Azure for Developers & DevOpsAppDynamics
The cloud has gained so much momentum that there is not a single day that you don’t hear or read about things like cloud native apps , containers, micro services, or cloud migration. The value in moving to the cloud is real – delivering better software experiences to customers faster and more reliably, No matter which of the scenarios you need to address, Azure offers a rich platform for developing any type of application. This session will cover some of Azure’s core services from a developer’s perspective, starting with development scenarios using Azure virtual machines and Virtual machine scale sets, building containerized services using the Azure container service, and building powerful web and mobile apps using Azure App Service. We’ll wrap up showing you how you can build always-on, scalable microservices applications using Azure Service Fabric. This deck was originally presented at AppSphere 2015.
Writing simple web services in java using eclipse editorSantosh Kumar Kar
This is a simple steps showing how you can write a simple web service, host into a server, write a client class to access the service on web server. Just for a beginners...
AppSphere 15 - Microsoft Azure for Developers & DevOpsAppDynamics
The cloud has gained so much momentum that there is not a single day that you don’t hear or read about things like cloud native apps , containers, micro services, or cloud migration. The value in moving to the cloud is real – delivering better software experiences to customers faster and more reliably, No matter which of the scenarios you need to address, Azure offers a rich platform for developing any type of application. This session will cover some of Azure’s core services from a developer’s perspective, starting with development scenarios using Azure virtual machines and Virtual machine scale sets, building containerized services using the Azure container service, and building powerful web and mobile apps using Azure App Service. We’ll wrap up showing you how you can build always-on, scalable microservices applications using Azure Service Fabric. This deck was originally presented at AppSphere 2015.
In Zusammenarbeit mit Microsoft und SofwareOne AG konnten wir am 3. Februar 2016 einen Workshop zur Microsoft-SQL-Lizenzierung durchführen. Die Referenten Alexander Egli, Beat Weissenberger und Detlef Werner gaben den Teilnehmern einen detaillierten Überblick über die Änderungen in der Lizenzierung von SQL Server 2012 sowie der aktuellen Lizenzierung von SQL Server 2014. Für die Version 2014 wurden folgende Szenarien besprochen:
Core-Lizenzierung
Lizenzierung in virtuellen Umgebungen
Hybride Szenarien mit Integration von Cloud-Komponenten
Ebenfalls wurden die Migration und Kostenbeispiele besprochen.
For our next ArcReady, we will explore a topic on everyone’s mind: Cloud computing. Several industry companies have announced cloud computing services . In October 2008 at the Professional Developers Conference, Microsoft announced the next phase of our Software + Services vision: the Azure Services Platform. The Azure Services Platforms provides a wide range of internet services that can be consumed from both on premises environments or the internet.
Session 1: Cloud Services
In our first session we will explore the current state of cloud services. We will then look at how applications should be architected for the cloud and explore a reference application deployed on Windows Azure. We will also look at the services that can be built for on premise application, using .NET Services. We will also address some of the concerns that enterprises have about cloud services, such as regulatory and compliance issues.
Session 2: The Azure Platform
In our second session we will take a slightly different look at cloud based services by exploring Live Mesh and Live Services. Live Mesh is a data synchronization client that has a rich API to build applications on. Live services are a collection of APIs that can be used to create rich applications for your customers. Live Services are based on internet standard protocols and data formats.
In Zusammenarbeit mit Microsoft und SofwareOne AG konnten wir am 3. Februar 2016 einen Workshop zur Microsoft-SQL-Lizenzierung durchführen. Die Referenten Alexander Egli, Beat Weissenberger und Detlef Werner gaben den Teilnehmern einen detaillierten Überblick über die Änderungen in der Lizenzierung von SQL Server 2012 sowie der aktuellen Lizenzierung von SQL Server 2014. Für die Version 2014 wurden folgende Szenarien besprochen:
Core-Lizenzierung
Lizenzierung in virtuellen Umgebungen
Hybride Szenarien mit Integration von Cloud-Komponenten
Ebenfalls wurden die Migration und Kostenbeispiele besprochen.
For our next ArcReady, we will explore a topic on everyone’s mind: Cloud computing. Several industry companies have announced cloud computing services . In October 2008 at the Professional Developers Conference, Microsoft announced the next phase of our Software + Services vision: the Azure Services Platform. The Azure Services Platforms provides a wide range of internet services that can be consumed from both on premises environments or the internet.
Session 1: Cloud Services
In our first session we will explore the current state of cloud services. We will then look at how applications should be architected for the cloud and explore a reference application deployed on Windows Azure. We will also look at the services that can be built for on premise application, using .NET Services. We will also address some of the concerns that enterprises have about cloud services, such as regulatory and compliance issues.
Session 2: The Azure Platform
In our second session we will take a slightly different look at cloud based services by exploring Live Mesh and Live Services. Live Mesh is a data synchronization client that has a rich API to build applications on. Live services are a collection of APIs that can be used to create rich applications for your customers. Live Services are based on internet standard protocols and data formats.
We report intron chromosomal expression FISH (iceFISH), a multiplex imaging method for measuring gene expression and chromosome structure simultaneously on single chromosomes. We find substantial differences in transcriptional frequency between genes on a translocated chromosome and the same genes in their normal chromosomal context in the same cell. Correlations between genes on a single chromosome pointed toward a cis chromosome-level transcriptional interaction spanning 14.3 megabases.
Todas las semanas en Saucépolis publicamos un resumen con algunos de los acontecimientos de interés cultural, de ocio o turístico que más pueden interesar a los zaragozanos y a la gente que nos visita: es nuestra gaceta a la que llamamos "Saucépolis News". Este es un breve resumen de los acontecimientos turísticos y de ocio en Zaragoza esta semana:
Estopa en concierto
El dúo catalán visita la ciudad en el décimo aniversario del grupo, con su gira Tour X. Los hermanos Muñoz con su pop rumbero y sus letras divertidas, son los herederos de la mejor rumba catalana. Vienen presentando su sexto disco, X Anniversarivm, un recopilatorio que incluye algunos duetos con estrellas del pop español. Los temas clásicos de la banda sonarán con seguridad en el auditorio el próximo viernes.
Sala multiusos del Auditorio de Zaragoza
Viernes 19 Febrero 21:30 horas
Zaragoza Comedy
Comienza el ciclo del humor en Zaragoza, y lo hace a lo grande. Dani Mateo, una de las estrellas que surgieron de Pramount Comedy, presentador del mítico Noche sin Tregua y hoy colaborador del exitoso Se lo que hicisteis. Y qué decir de Joaquín Reyes, auténtico gurú de los Chanantes, alma de Muchachada nui, inolvidable Onofre en Smonka o Richard en Camara café. Un maestro del humor absurdo. Dos de los mejores cómicos del momento.
Sala Mozart Auditorio de Zaragoza
Sábado 20 de Febrero 22:00 horas.
La Montaña Rusa en el Principal
César es un empresario de éxito, un hombre maduro atractivo con una vida familiar estable y feliz. Un atardecer de invierno toda su vida va a dar un vuelco con nombre de mujer. Lola, atractiva y simpàtica, parece dispuesta a una aventura sin complicaciones. Sin embargo nada es lo que parece en esta comedia de enredo. Arturo Fernandez, quién si no, y Carmen del Valle interpretan esta montaña rusa emocional esta semana en el Principal.
Teatro Principal
16, 17 y 18 de Febrero 21:00 horas.
19 de Febrero 22:00 horas
20 de Febrero19:00 y 22:00 horas
21 de Febrero 19:00 horas
Creative crowdsourcing - Specwork reflections and proposals - Travail spécula...creativecrowdsourcingleaks
Le travail spéculatif - réflexions et propositions
Document remis le 21 juillet 2014 à Mme Axelle Lemaire , Secrétaire d'Etat chargée du Numérique
Fait suite à la pétition http://www.travailgratuit.com/
"Non à l'exploitation du travail gratuit comme modèle de réussite en France"
Creative crowdsourcing - Specwork reflections and proposals
Todas las semanas en Saucépolis publicamos un resumen con algunos de los acontecimientos de interés cultural, de ocio o turístico que más pueden interesar a los zaragozanos y a la gente que nos visita: es nuestra gaceta a la que llamamos "Saucépolis News". Este es un breve resumen de los acontecimientos turísticos y de ocio en Zaragoza esta semana:
¡Carnaval!
Llegan las máscaras, los disfraces y el desenfreno. Aunque esto no es Río, Cadiz o Tenerife, aquí también hay desfiles, chirigotas y comparsas. En Interpeñas verbena de Jueves Lardero y concurso de guasas y cuchufletas. En pleno centro de la ciudad, el sábado, gran desfile de carnaval. En la Plaza de Santa Engracia, concentración de comparsas. Y el domingo, en el paseo de la Independencia, Carnaval Infantil. ¡No olviden sus disfraces!
Desde el Jueves 11 de Febrero
Delicatessen: danza en el Principal
Tres espectáculos coreográficos independientes enlazados por un personaje común: Mr. Delicatessen. La obra pretende ser una traslación de la gastronomía a la danza que estimule al espectador y cree para él una atmósfera que despierte los sentidos. Diez bailarines en escena y la música en vivo del trío Salduie, con piano, violín y violonchelo.
Teatro Principal
11, 12 y 13 de Febrero 21:00 horas
Domingo 14 19:00 horas
Manuel Carrasco en concierto
Manuel Carrasco presenta su último trabajo: Inercia. Lo hace en una gira por teatros y auditorios que se adaptan a un formato de concierto íntimo, y con un repertorio en el que destacan las baladas poniendo en valor sus dotes interpretativas y de compositor.
Teatro Principal
Martes 9 de Febrero 21:00 horas.
Continúa el ciclo de Grandes conciertos en el auditorio
La Royal Concert Gebow de Amsterdam, la orquesta sinfónica mas conocida y respetada de Holanda y considerada una de las mejores del mundo, visitarà la ciudad el próximo viernes. Interpretando obras de Sibelius y Brahms harán las delicias de los aficionados a la música clásica en un nuevo gran concierto en esta excelente temporada en el Auditorio.
Sala Mozart del Auditorio de Zaragoza
12 de Febrero 19:30
Find out the essence of M C Squared project and of the c-books in our new brochure. The M C Squared project is developing the “c-book” (“c” for creative) extending e-book technologies to include diverse dynamic widgets and an authorable data analytics engine.
Todas las semanas en Saucépolis publicamos un resumen con algunos de los acontecimientos de interés cultural, de ocio o turístico que más pueden interesar a los zaragozanos y a la gente que nos visita: es nuestra gaceta a la que llamamos "Saucépolis News". Este es un breve resumen de los acontecimientos turísticos y de ocio en Zaragoza esta semana:La Navidad llega a Saucepolis.
A escasos metros de Saucepolis, en plena plaza del Pilar, se respira espíritu navideño. Junto al Monumental Belén que merece una visita per se, encontramos un mercadillo de artesanía y artículos de regalo. Son 16 casetas de madera, un carrusel antiguo, castañeras y gofrerías. Además, actuaciones en el escenario, pasacalles y títeres harán las delicias de los mas pequeños.
Plaza del Pilar
De 11:00 a 14:00 y de 17:00 a 21:00 Horas.
Cabaré de caricia y puntapié.
Boris Vian es un artista de culto en Francia, pero su obra es muy poco conocida en nuestro país. Partiendo de diez de sus canciones, la compañía El Gato Negro ha compuesto este espectáculo de Cabaré surrealista que se adapta a la perfección al espíritu absurdo de la obra de Vian. Dos carniceros de barrio cantando un tango, un inventor de bombas atómicas y su fascinado sobrino, o una abuela y su nieta hablando del materialismo, el amor y el progreso. Totalmente surrealista. Deliciosamente absurdo.
Teatro Principal
Miercoles y Jueves 21:00 Horas.
Viernes 22:00 Horas.
Sábado 19:00 y 22:00 Horas.
Domingo 19:00 Horas.
Gospel en el Auditorio
El grupo sudafricano Soweto Gospel Choir llenará de ritmos y voces africanas la sala Mozart del Auditorio el próximo viernes. Este coro se ha convertido en una de las referencias de la música espiritual a nivel global. Su espectáculo con danzas , ritmos y ropas africanas los separan de otros grupos del gospel norteamericano.
Sala Mozart Auditorio de Zaragoza
Viernes 11 de Diciembre 21:00 Horas
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)Daniel Bryant
A guest lecture I presented to MSc Level Enterprise Systems Development students within the Department of Computing at the University of Surrey. This was a very similar presentation to the L2 lecture delivered the week earlier, but also included more advanced material.
Cloud computing - an insight into "how does it really work ?" Tikal Knowledge
Using "Grails" and utilizing SpringSource, we shall offer a hands-on demo introducing a typical "Grails" development environment and a classical cloud computing application deployed and managed on top of Amazon CC services.
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusUni Systems S.M.S.A.
Dimitris Andreadis, Director of Engineering and Manager of the Quarkus Team at Red Hat, discusses the History, Concepts and Technical Overview of Quarkus framework. The webinar was delivered on June 25, 2020
JavaScript, Meet Cloud: Node.js on Windows AzureSasha Goldshtein
Slides from a talk at the North Toronto .NET User Group. An introduction to Node.js and Express followed by a tour of Windows Azure and various hosting options for Node applications, including Windows Azure Web Sites, Windows Azure Mobile Services, and Windows Azure Virtual Machines.
Hidden pearls for High-Performance-PersistenceSven Ruppert
Small UseCases with a significant amount of data for internal company usage, most developers had this in their career, already. However, no Ops Team, no Kubernetes, no Cluster is available as part of the solution.
In this talk, I will show a few tech stacks that are helping to deal with persistent data without dealing with the classic horizontal scaling tech monsters like Kubernetes, Hadoop and many more.
Sit down, relax and enjoy the journey through a bunch of lightning-fast persistence alternatives for pure java devs.
Docker containers have been making inroads into Windows and Azure world. Docker has now replaced the traditional Azure IaaS & PaaS services, offering superior container versions which are more responsive, cost effective, and agile. In this session for Charlotte Azure User Group, we will take an in-depth look at the intersection of Docker and Azure, and how Docker is empowering next gen Azure services.
Here's the link to CAG meetup for the event - https://www.meetup.com/Charlotte-Microsoft-Azure/events/fpftgmyxjbjb/
Cloud State of the Union for Java DevelopersBurr Sutter
This presentation provides a broad overview of what is going on in the Cloud computing world - for Java developers - presented on Dec 21st 2010 at the Atlanta Java Users Group - ajug.org - no audio was recorded.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ZK MVVM, Spring & JPA On Two PaaS Clouds
1. ZK, Spring & JPA On
Two PaaS Clouds
(Java MVVM Adventures Featuring
Heroku & Openshift)
Simon Massey
2. Overview
What is PaaS "Cloud" and why we should care?
Background to the ZkToDo2 sample app
Outline of the MVVM Pattern
Walk through of MVVM sample page (new ZK6
features!)
Quick pass of the Spring & JPA internals
The key ingredient: maven build profiles
Live push of source to two clouds! (Fingers
crossed!)
3. Clouds (In One Slide)
Clouds come "as a service" (aaS)
Software aaS
Infrastructure aaS
Platform aaS
SaaS is your data on the cloud with leased
software (they do everything)
IaaS is leased managed hardware (they can do
the network)
PaaS is leased application/database capacity
(they keep it running whilst you write the app)
4. The PaaS Proposition
Server virtualization is very mainstream. High
density host servers reduce overheads
Failover, off-site backup, standby servers, spare
parts, upgrades, network is divided by number
of virtual servers
Rent a "virtual private server" (VPS) and you
have to set it up and care for it yourself (logs
filling up your disks?)
How do you source 0.2 system adminstrators for
your app? And if they change jobs?
Outsource this to a PaaS provider!
5. The PaaS Proposition (2)
A big provider with a big server farm has
automated deployment "elastic platform"
Need more power? "Click here Sir to approve
the monthy credit card payments..."
Choice is a double edged sword; standardization
is the key to maintaining a large estate of
applications
Big cloud farms run thousands of servers and are
evolving best practice at a high rate
Running your own servers is very last century;
you can offload that work to the experts
6. Is Your PaaS RIA Friendly?
Not all PaaS clouds are AJAX friendly. Some
assume that you are hosting a blog (i.e.
stateless full page reload app)
Not all PaaS clouds provide a relational
database. ZK apps tend to be data orientated
desktop-like apps which need an RDBMS
J2EE is "complex" but PHP and Ruby are
"simple"(??). Java sat outside the party whilst
Ruby On Rails danced up a storm
… but now the big Rails clouds are doing Java
and are making it look very easy!
7. Interlude
Code https://github.com/simbo1905/ZkToDo2
Where is it running?
Redhat Openshift zktd2-zkdemo.rhcloud.com
Heruko glowing-light-1070.herokuapp.com
(note: apps may suspend when idle so may take
a long time to start on first hit)
What IDE, DB, etc?
8. The Code In Context
The "ZK ToDo 2" sample app has the same
screen implimented three times; using MVP,
MVC and ZK6 MVVM (aka MVB) patterns
Three ZK articles document the different patterns
in the code MVP (2007), MVC (2009), MVVM
(2011). MVVM article is out of date as sample
code now does ZK6 "ZK Bind" MVVM
Sample code has moved to the zktodo2 repo on
GitHub with an Apache2 license
The code now deploys to Heroku or Openshift
PaaS clouds!
9. About The Code
The "ZkToDo2" sample app (aka zktd2) is a
simple database CRUD app written with ZK,
Spring and JPA
Code uses a relational DB and has configurations
for HSQL, MySQL and PostreSQL databases
Spring instantiates the objects and wires them
together when the ZUL page "asks for" a
spring bean due to XML databindings
Leverages SpringMVC scopes and ZKSpring for
elegant care free coding
11. … is all databindings!
Your
ClickMe! 1 Java
2
ZK Web ZK
Desktop Bind
4 3
Saved! this.msg="Saved!"
12. Model-View-ViewModel
View == Web Desktop
Binder
<<reflection>>
Legend
ViewModel compiles to
command
DomainModel load
13. The ViewModel Class
[show code] org.zkforge.zktodo2.ZkToDoViewModel
Holds the List<Reminder> the user is working with
Holds the selectedItem Reminder the user is
currently editing
Uses the ReminderService which updates the
database
Has the add(), save(), delete() methods
Can be shared by different views
The view is active; "@bind" has AJAX updates write to
the selectedItem Reminder
14. Data Bindings
Page load calls getReminders on toDoViewModel
and renders each date in a list:
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init(toDoViewModel2)">
<listbox model="@load(vm.reminders)"
selectedItem="@bind(vm.selectedReminder)">
<template name="model" var="reminder">
<listitem>
<listcell label="@load(reminder.date)"/>
</listitem></template</listbox></window>
15. Data Bindings 2
When the user selects a different reminder in the
list let the user edit it in the edit panel:
Date:<datebox
value="@bind(vm.selectedReminder.date)" />
The vm.selectedReminder is refered to in
multiple places. It is written to by the onSelect
Event of the Listbox:
<listbox model="@load(vm.reminders)"
selectedItem="@bind(vm.selectedReminder)">
ZKBind keeps track what it changes and reloads
UI with changed state
16. Command Bindings
New in ZK6!
<button label="Save" onClick="@command('save')"/>
There is zero code to read/write data between
screen and the JPA entites: binder is updating
them over AJAX
save() only calls save(selectedReminder) or
delete(selectedReminder)
The binder is a generic UI Controller
ZK Bind updates UI + Model + Entities
You just write very testable Java!
17. Less Boiler Plate Code
Java methods which change state have hints as
to what to reload into the screen:
@Command
@NotifyChange({"reminders","selectedReminder"})
public void delete() { .... }
Annotations on the Reminder entity setters and
on the ViewModel CRUD methods
Desktop "zul" is bound onto the ViewModel
Could make "admin screen" & "read-only
screen" for the same ViewModel (else "touch
screen" & "mouse screen")
18. Spring Bean XML Definitions...
ViewModel bean has "desktop" scope
<bean id="toDoViewModel2"
class="org.zkforge.zktodo2.ZkToDoViewModel"
p:reminderService-ref="reminderService" scope="desktop" />
So only one bean per web desktop (you may have many
desktops per http session)
... has singleton reminder service:
<bean id="reminderService"
class="org.zkforge.zktodo2.ReminderService"
p:basicDao-ref="basicDao" />
… has singleton basicDao:
<bean id="basicDao" class="org.zkforge.zktodo2.BasicDao"/
>
19. … Stable Since 2007
Same BasicDao for other patterns demo screens
These days you don't need the Spring XML.
Spring has alternative way to specificy how to
wire up the beans (with Java annotations)
CDI would not be hard at all (see zkcdi library)
Back-end code is "orthodox" allowing us to
focus on the code and what's new; ZK Patterns
… and deploying onto different Clouds!
20. ZK Cloud "Bake Off"
Two leading cloud providers chosen scientifically
and at random (google+beer)
Each backed by a major software company
(Salesforce vs Redhat)
Are they opensource like ZK, do they run it well,
and are they easy to use...?
21. What Do You Get?
Feature Heroku Openshift
Deploy from Yes. Git + Maven Yes. Git + Maven
source?[1]
Database? PostgreSQL MySQL
Container? Jetty7.4 JBossAS7.0
(embedded) (standalone)
Proprietary No problems for No problems for
Gotchas?[2] the sample app the sample app
[1] With Git you commit locally and "push" all the commits to one or
more repos. One remote repo is the cloud; it compiles+deploys
[2] ”Can I move my production app at any time to my own servers?”
22. The Maven Build Profiles
Develop and debug on the jetty-maven-plugin ”mvn
jetty:run” then deploy to JBoss, Weblogic,
Websphere or Tomcat when it is ready to user test
When in JUnit or debugging (jetty:run) Spring is
configured to setup the resources (datasource, jms)
To run in JBossAS7 Spring is configured to pull in the
platform resources (jndi-datasource, jndi-jms)
Maven build profiles swap the Spring configuration based on
a "-P" parameter using webapp "overlays"
Write once deploy to any cloud:
mvn -P "openshift" package
mvn -P "cloudX" package
23. Live Deploy Demo
This could be wishful thinking...!
[p.s. All went well, we committed a change to the
screen locally and with a single command
deployed to each of the two cloud services]
24. … And The Winner Is ...?
Both clouds are lightening fast for ZK AJAX!
Both have fully opensourced stacks!
Both are oh-so-easy-to-use
25. References
The code https://github.com/simbo1905/ZkToDo2
ZK6 MVVM introduction Hello ZK MVVM
MVC article Desktop MVC Patterns ZK, Spring & JPA
Original MVP article
SmallTalks 2008 Best MVC Patterns
Book on how to build a layered domain model with
Spring POJOs In Action
Martin Fowler GUI Patterns pages UI Architectures
Josh Smith's inspirational Microsoft .Net MVVM Article