Archive for the ‘General’ Category
[DevoxxBE2012] Raise Your Java EE 6 Productivity Bar with JBoss Forge
Koen Aers, a Red Hat engineer driving Eclipse integration for JBoss Forge, alongside guest Ivan St. Ivanov from SAP, explored boosting Java EE 6 development efficiency. Koen, with a background in jBPM and workflow editors, refreshed on Forge’s role in simplifying complex setups for novices.
Forge, a command-line tool using CDI, incrementally adds features to projects. Commands scaffold entities, UI, and services swiftly.
They demonstrated creating a project, adding persistence with JPA, generating entities like Speaker and Session, and scaffolding JSF views.
For tasks beyond built-ins, plugins extend functionality. Ivan showed developing an Envers plugin for auditing, installing it, and applying to entities.
Integration with IDEs like Eclipse opens Forge’s power graphically.
Their demo built a conference app, adding history views with auditing, showcasing rapid enhancements.
Koen and Ivan emphasized Forge’s elevation of productivity, enabling faster iterations.
Introducing Forge and Basic Workflows
Koen explained Forge’s shell for navigating projects, setting up Maven builds, and adding facets like JPA for persistence.xml configuration.
Commands generate entities with fields, relationships via annotations.
Scaffolding and UI Generation
Scaffolding creates CRUD operations and JSF views from entities, deploying to servers like AS7.
They customized views, adding fields and relations.
Extending with Plugins
Ivan illustrated plugin creation: facets detect capabilities, commands execute actions like adding dependencies.
The Envers plugin audited entities, integrating seamlessly.
IDE Integration and Real-World Application
Eclipse plugins embed Forge consoles, enhancing workflows.
In demo, they audited entities, added history beans, and viewed changes, proving incremental power.
Koen and Ivan’s insights highlighted Forge’s transformative impact on Java EE development.
Links:
[DevoxxFR2013] Regular or Decaffeinated? Java’s Future in the Cloud
Lecturer
Alexis Moussine-Pouchkine, a veteran of Sun Microsystems, currently serves as a Developer Relations lead at Google in Paris, assisting developers in achieving success. With over a decade at Sun and nearly two years at Oracle, he brings extensive experience in Java ecosystems and cloud technologies.
Abstract
Alexis Moussine-Pouchkine’s presentation examines Java’s evolution and its potential trajectory in cloud computing. Reflecting on historical shifts in technology, he critiques current limitations and advocates for advancements like multi-tenancy and resource management to ensure Java’s relevance. Through industry examples and forward-looking analysis, the talk underscores the need for adaptation to maintain Java’s position amid resource rationalization and emerging paradigms.
Java’s Maturation and the Cloud Imperative
Moussine-Pouchkine opens by recounting his transition from Sun Microsystems to Oracle and then Google, highlighting how each company has shaped computing history. At Sun, innovation abounded but market fit was inconsistent; Oracle emphasized acquisitions over novelty, straining community ties; Google prioritizes engineers, fostering rapid development.
He likens Java’s current state to emerging from adolescence, facing challenges in cloud environments where resource optimization is paramount. Drawing from his engineering school days with strict quotas on compilation and connection time, Alexis contrasts this with Java’s initial promise of freedom and flexibility. Early experiences with Linux provided boundless experimentation, mirroring Java’s liberating potential in 1997.
The speaker invokes historical predictions: IBM’s CEO allegedly foresaw a market for only five computers in 1943, possibly prescient regarding cloud providers. Bill Gates’ 640K memory quip and Greg Papadopoulos’ 2003 vision of five to seven massive global computers underscore consolidation trends. Papadopoulos envisioned entities like Google, eBay, Salesforce, Microsoft, Amazon, and a Chinese cloud, a perspective less radical today given web evolution.
Java’s centrality in tomorrow’s cloud is questioned. While present in many offerings, most implementations remain prototypes, circumventing Java’s constraints. The cloud demands shared resources and concentration of expertise, yet Java’s future here is uncertain, risking obsolescence like COBOL.
Challenges and Necessary Evolutions for Java in Multi-Tenant Environments
A core issue is Java’s adaptation to multi-tenancy, where multiple applications share a JVM without interference. Current JVMs lack robust isolation, leading to inefficiencies in cloud settings. Moussine-Pouchkine notes Java’s success in Android and Chrome, where processes are segregated, but enterprise demands shared instances for cost savings.
He critiques the stalled JSR-284 for resource management, essential for quotas and usage-based billing. Without these, Java lags in cloud viability. Examples like Google’s App Engine illustrate Java’s limitations: no threads, file system restrictions, and 30-second request limits, forcing workarounds.
Commercial solutions emerge: Waratek’s hypervisor on HotSpot, IBM’s J9 VM, and SAP’s container enable multi-tenancy. Yet, quotas remain crucial for responsible computing, akin to not overindulging at a buffet to ensure sustainability.
Java 9 priorities include modularity (Jigsaw), potentially aiding resource management. Cloud Foundry’s varying memory allocations by language highlight Java’s inefficiencies. Moussine-Pouchkine urges a “slider” for JVM scaling, from minimal to robust, without API fractures.
The community, pioneers in agile practices, continuous integration, and dependency management, must embrace modularity and quotas. Java 7 introduced dynamic languages; Java 8 tackles multicore with lambdas. Recent Oracle slides affirm multi-tenancy and resource management in Java 9 and beyond.
Implications for Sustainable and Credible Informatics
Moussine-Pouchkine advocates responsible informatics: quotas foster predictability, countering perceptions of IT as imprecise and costly. Developers, like artisans, must steward tools and design thoughtfully. Over-reliance on libraries (90% bloat) signals accumulated technical debt.
Quotas enhance credibility, enabling commitments and superior delivery. Java’s adaptive history positions it well, provided the community envisions it “caffeinated” – vibrant and adult – rather than “decaffeinated” and stagnant.
In essence, Java must address multi-tenancy and resources to thrive in consolidated clouds, avoiding the fate of outdated technologies.
Relevant Links and Hashtags
Links:
[DevoxxFR2013] The History of Writings
Lecturer
Clarisse Herrenschmidt is a French archaeologist, ancient historian, philologist, and linguist, born October 24, 1946, in Strasbourg. A CNRS researcher since 1979, she is affiliated with the Laboratoire d’Anthropologie Sociale at the Collège de France. She has taught at INALCO (Iranian history, scripts, and graphic cultures) and Paris 8 University (linguistic anthropology). Her book “Les Trois Écritures: Langue, nombre, code” (Gallimard, 2007) won the Georges Dumézil Prize from the Académie Française and the Georges Picot Prize from the Académie des Sciences Morales et Politiques in 2008.
Abstract
Clarisse Herrenschmidt’s lecture surveys 53 centuries of script evolution, from Mesopotamian origins to informatics. Focusing on numeric and monetary inscriptions, she traces innovations from calculi to Indo-Arabic numerals, linking them to societal transformations. Analyzing artifacts as corporeal metaphors, Herrenschmidt reveals scripts’ role in anthropology, economy, and mythology, emphasizing their global yet Western-centric conquest.
Origins in the Ancient Near East: From Calculi to Scripts
Herrenschmidt commences with seventh-millennium BCE calculi – stone/clay objects representing numbers in base-60 systems (sticks for 1, balls for 10, cones for 60). Used for tallying livestock or grain, they stored counts in bowls, aiding memory post-Neolithic shifts to agriculture and pastoralism.
Urban revolutions in Uruk integrated economy, politics, religion, necessitating sealed storage. Clay balls sealed knots on bales/doors; “envelope-bulls” enclosed calculi, representing stored quantities. Seals (e.g., carved stones with birds) identified social actors.
Innovation: marking envelopes’ exteriors with impressions, rendering invisible calculi visible – birthing numerals without destruction. Flat tablets followed: Susa examples bear workshop seals (weaving atelier) and numeric signs (pits for units).
Pictographic tablets added linguistic signs alongside numerals, evolving proto-cuneiform. This rendered invisible visible, foundational for informatics.
Monetary Inscriptions and Geometric-Arithmetic Evolution
Jumping to seventh-century BCE Lydia/Ionia, Herrenschmidt examines coined money: small electrum globules stamped with designs (e.g., lion heads). Coins bore issuer marks and values, disseminating arithmetic-geometric scripts.
Unlike Mesopotamian weight-based metals, coins standardized value via stamps, not weight. Inscriptions (e.g., Persian darics with archer-kings) embodied issuer, value, recipient – a tripartite structure persisting in modern currency.
Indo-Arabic numerals (1-9 from India sixth-seventh centuries CE, zero uniquely Indian) transmitted via Persian-Arabic mathematicians, reached Mediterranean. Sicilian coins (c.1150-55) feature Christ busts, Arabic text, Hijri dates with Indo-Arabic figures.
Fibonacci’s “Liber Abaci” (1202) introduced positional notation, fractions, algebra, geometry, loans/interests – secretly used by merchants despite Church bans.
From Letters of Exchange to Modern Differentiations
Indo-Arabic numerals birthed new money: 1404 letters of exchange – paper-based, metal-free, concealing loans via currency transfers (e.g., Italy to Barcelona). Ancestors of banknotes/checks, unimaginable in Greco-Roman antiquity despite intelligence.
Herrenschmidt notes exhaustion of monetary-arithmetic scripts providing informatics’ terrain. Mathematics developed binary (Leibniz), differentials (Boole), questioning foundations.
Hilbert’s problems (1900-1928): completeness (every statement provable/disprovable? Gödel: no), consistency (avoid absurdities like 1+2=5? Possible), decidability (method to verify assertions? Turing: no).
Informatics and Mythic Corporeal Metaphors
Responses negate mathematics as self-founding language; it differentiates from money (Nixon severs dollar-gold link August 15, 1971, coinciding networks’ rise). Nasdaq’s foundation and TCP/IP (1969-71) mark shifts, though historical-political opacity persists amid U.S. propaganda.
Turing’s 1936 “automatic machine” – theoretical reader-head and infinite tape – conceptualizes computers. Herrenschmidt synthesizes artifacts: envelope-bull (mouth, emitting signs), coin (eye, estimating magnitudes), Turing machine (brain).
These corporeal metaphors underpin script inventions: mouth for numeric/linguistic, eye for grandeur estimation, brain for computation. Humans remain ensnared in mythic bodies emitting/capturing signs, becoming techniques.
Informatics’ third graphic revolution transforms societies and selves, altering habits and constructing beings within immense myths. Developers enact this; observers marvel.
Relevant Links and Hashtags
Links:
[DevoxxFR2013] Objects and Functions: Conflict Without a Cause?
Lecturer
Martin Odersky is a professor at EPFL in Lausanne, Switzerland, specializing in programming languages that blend object-oriented and functional paradigms. His research unifies these approaches, evidenced by designs like Pizza, GJ, and Functional Nets. He co-designed Java generics and authored the original javac compiler. Currently, he focuses on Scala, fusing functional and object-oriented programming while ensuring interoperability with Java and .NET.
Abstract
Martin Odersky’s lecture traces object-oriented programming’s (OOP) rise, parallels it with functional programming’s (FP) resurgence, and argues for their synthesis. Analyzing historical catalysts, methodological benefits, and modern hardware demands, he demonstrates how FP addresses parallelism and reactivity challenges. Through Scala examples, Odersky shows OOP and FP as complementary, enhancing modularity and abstraction without mutual exclusion.
Historical Roots and Catalysts for OOP Adoption
Odersky recounts his journey from Pascal compilers to modular languages, Java involvement, and Scala creation. OOP’s mainstreaming, he argues, stemmed not from encapsulation or reuse but practical necessities. Simula (1967) for simulations and Smalltalk (late 1970s) for GUI widgets inverted traditional data structures: fixed operations, unbounded implementations.
In procedural languages like C, this was cumbersome via function pointers; OOP simplified dynamic binding for unknown implementations. Odersky notes early confusion with Smalltalk, mirroring current FP bewilderment. OOP’s advantages – modeling, dependency inversion – emerged post-adoption, sparked by widget programming appeal.
Functional Programming’s Resurgence and Methodological Strengths
FP offers fewer errors, superior modularity, and productivity via higher abstractions and shorter code. Yet, despite 50-year existence, mainstream adoption lagged. Odersky identifies multicore and cloud computing as catalysts: parallelism for hardware utilization, reactivity for asynchronous events, distribution for delays/failures.
Mutable state exacerbates issues like cache coherence and non-determinism in concurrent environments. Immutable data mitigates races, enabling safe caching. Locks/threads scale poorly; even transactions retain problems. FP’s immutability fosters determinism, crucial for scalable systems.
Addressing Modern Computing Challenges with FP
Odersky outlines a triple challenge: parallel, reactive, distributed programming. Mutable state hinders each; FP excels by avoiding it.
For parallelism, he exemplifies mapping developer names: sequential in Scala, parallel via .par, yielding a parallel collection. Side effects risk chaos due to reordered executions, necessitating functional purity for correctness.
Reactivity example: an online store querying users, orders, products, stock. Synchronous calls block threads on slow services, degrading performance. Asynchronous futures prevent blocking; Scala’s for-comprehensions compose them elegantly, hiding complexity. Refactoring for parallelism pairs futures, executing concurrently.
For-comprehensions translate universally to map, flatMap, filter, allowing library-defined interpretations – sequential or async – without polluting domain logic.
Synthesizing OOP and FP: Beyond False Dichotomies
Communities often view OOP and FP oppositely, but Odersky argues orthogonality. Objects modularize (“what goes where”), providing containers with dynamic binding and inheritance. Essential for large codebases (e.g., million-line Scala systems), they prevent global namespace chaos – a Haskell limitation.
Redefine objects: eliminate mutable state dogma (e.g., immutable java.lang.String), structural equality over identity, focus on behavior. Scala embodies this fusion, modeling algebraic types with objects while importing FP capabilities.
Scala unifies scripting (winning JavaOne Script Bowl) and safe, performant systems (core for Twitter, LinkedIn). Odersky concludes OOP/FP synergy enhances development, urging exploration via Scala Days, courses, and talks.
Relevant Links and Hashtags
Links:
[DevoxxBE2012] Rapid Application Development with Play 2
Peter Hausel, a core team member of the Play Framework and software engineer at Typesafe, demonstrated the efficiencies of Play 2 for swift web development in both Java and Scala. With a background in web technologies and open source, Peter showcased how Play streamlines workflows, emphasizing live coding to illustrate its features.
He initiated by creating a new Java-based application, highlighting Play’s MVC structure: controllers for logic, views for Scala-based templates, and routes for URL mapping. Peter noted that even Java projects use Scala templates, which require minimal learning akin to JSP.
A key advantage is on-the-fly compilation; changes reload automatically without restarts, accelerating iterations. Peter modified a controller and template, refreshing the browser to see instant updates.
Type-safe templates and routes prevent runtime errors, with compile-time checks ensuring correctness. He integrated front-end tools like CoffeeScript, LESS, and Google Closure Compiler, compiling them seamlessly into production assets.
Peter explored asset management, using RequireJS for modular JavaScript, and reverse routing to generate URLs dynamically, avoiding hardcoding.
For production, he packaged the app into a distributable ZIP, running it standalone. He peeked into running applications via REPL for interactive debugging.
Testing was touched upon, with future scaffolding promised to generate tests easily.
Peter’s demo underscored Play’s design for productivity, blending familiarity with powerful abstractions.
Core Structure and Development Workflow
Peter detailed Play’s layout: app folder houses controllers, views, and assets; conf holds configurations and routes. Routes define HTTP methods, paths, and controllers, supporting parameters for dynamic handling.
In live coding, he added a new route and controller method, demonstrating error handling where compilation failures display directly in the browser, guiding fixes.
Templates use Scala syntax for logic, with type safety catching mismatches early. Peter included layouts via @main, composing reusable structures.
Front-End Integration and Asset Handling
Play compiles CoffeeScript and LESS on-the-fly, minifying with Closure for optimization. Peter added a CoffeeScript file, seeing it transform into JavaScript.
RequireJS integration modularizes scripts, with routes serving them efficiently.
Deployment and Advanced Features
Packaging creates self-contained distributions, runnable via commands. REPL allows inspecting live state.
Peter recapped: routes centralize mapping, auto-reload speeds development, and reverse routing enhances maintainability.
His session positioned Play as a tool for rapid, robust applications.
Links:
[DevoxxFR2013] Keynote “Ouverture”: Welcoming Devoxx France 2013
Lecturer
Nicolas Martignole is an independent consultant and founder of Innoteria, with over a decade of experience in Java. He specializes in architecture, team coaching, and project management, having implemented Scrum at a major French bank since 2008 and previously at Thomson-Reuters as a senior developer and project manager. He authors the blog “Le Touilleur Express.”
Antonio Goncalves is a senior architect consulting and training on Java technologies. Formerly a Weblogic consultant at BEA Systems, he has focused on software architecture since 1998. Author of “Java EE 5” (Eyrolles) and “Beginning Java EE 6 Platform With GlassFish 3” (Apress), he contributes to JCP on Java EE 6, JPA 2.0, and EJB 3.1. He teaches at the Conservatoire National des Arts et Métiers and co-founded the Paris Java User Group.
Zouheir Cadi is an independent consultant specializing in Java/JEE technologies. After years in development, he serves as a production architect, bridging development and operations. Currently at France’s top e-commerce site, he is a Paris JUG board member and Devoxx France co-founder.
José Paumard, passionate about programming for over 20 years, transitioned from assembler and C to Java. An assistant professor at Paris University for 15 years with a PhD in applied mathematics and computer science, he blogs at “Java le soir,” a key French resource on Java. A Paris JUG member, he co-organizes Devoxx France and speaks at conferences like Devoxx and JavaOne.
Abstract
This article examines the opening keynote of Devoxx France 2013, delivered by Nicolas Martignole, Antonio Goncalves, Zouheir Cadi, and José Paumard. It contextualizes the event’s growth, organizational challenges, and community focus, analyzing session selection, special events, and thematic keynotes on past, present, and future of the industry. The discussion highlights transparency in call-for-papers, sponsor contributions, and efforts to engage diverse audiences, underscoring Devoxx’s role in fostering Java and broader tech ecosystems.
Event Overview and Growth Trajectory
The keynote commences with warm welcomes, acknowledging the team’s efforts in hosting Devoxx France 2013, a three-day event with 180 speakers, 75% French-language content. Martignole notes the expansion from 1,250 attendees in the inaugural edition to 1,400, a 220-person increase, signaling strong community interest. This growth mirrors the Devoxx family’s international success: 3,500 in Belgium and 500 for the UK’s debut, organized in just four months.
A satisfaction survey from the previous year, with 301 responses, informs improvements. Despite its length (81% found it too long, 18% much too long), it guides refinements, with Goncalves promising quality control for future iterations. The emphasis on constructive feedback, especially negatives, reflects a commitment to attendee-driven evolution.
Practical details include a free “Meet and Greet” evening with wine and cheese, sponsored by SonarSource, Atlassian, and CloudBees, running until 22:00. Six rooms host sessions, with overflow managed by red-vested volunteers for safety. All talks are recorded on Parleys.com, alleviating concerns about missing content. Community integration is highlighted, welcoming groups like Paris JS and Scala User Group.
Organizational Transparency and Session Selection
Transparency in the call-for-papers process is a focal point. Opened November 20 and closed January 31, it garnered 572 submissions, accepting only 162 due to venue constraints. Conferences (50-minute slots) saw 320 proposals, with 74 accepted; 14 allocated to premium sponsors, leaving 60 for general selection – an 82% rejection rate.
A 10-person team, including volunteers, rigorously evaluated submissions, using notes (0-5 scale), discussions, pizzas, and color-coded Post-its. Goncalves humorously notes resorting to a cat for ties, underscoring the process’s seriousness despite challenges. Rejected speakers are encouraged to reapply or present at local JUGs, emphasizing inclusivity.
The keynote theme – past, present, future – features speakers like Clarisse Herrenschmidt on writing history, Martin Odersky on objects and functionals, Alexis Moussine-Pouchkine on Java’s trajectory, and Habib Guergachi on web architectures. Odersky’s evening BoF is noted for Scala enthusiasts.
Special Initiatives and Community Engagement
Unique events differentiate Devoxx: “Devoxx for Kids,” led by Audrey Neveux, introduced 70 children to programming via robots the previous day, aiming to demystify parents’ professions. Though not repeatable annually due to school changes, it inspires future iterations alongside Belgium’s multilingual versions.
“Open Source Hacking” with Brice Dutheil and Mathieu Ancelin offers hands-on contribution. The “Afternoon for Decision-Makers,” from 14:00-18:15, mixes genres with CIOs discussing cloud, prepared by Arnaud Héritier. Reserved seats accommodate hard-to-book executives, but it’s open to all.
“Code Story,” by David Gageot and Jean-Laurent de Morlhon, features full-day live coding in a basement room. “Mercenaries of DevOps,” with Pierre-Antoine Grisoni, Henry Gomez, and others, explores native packaging and Kanban boards the next day.
Sponsors receive gratitude: premium partners enable affordable tickets; Oxiane handles training for over half attendees, managing complex dossiers. Medium and base sponsors filled slots quickly, with full exhibition halls praised for embodying Devoxx spirit.
In summation, the keynote reinforces Devoxx as a collaborative hub, blending education, networking, and innovation to advance the Java community and beyond.
Relevant Links and Hashtags
Links:
[DevoxxFR2013] Web Oriented Architecture: A Transmutation of Practices in Building Information Systems
Lecturer
Habib Guergachi is a Centrale graduate and the CEO and co-founder of Zenexity, established in 2003. As an expert in urbanization, he is among the French architects who introduced key concepts such as the “integrability coefficient” of applications. His professional background includes over seven years at the Central IT Department of AXA, more than three years at the IT Strategy Department of Société Générale, and five years on the executive committee and Technical Direction of a major IT services company. Currently, he leads large-scale urbanization projects and transformations of information systems toward web-oriented models. He also conducts seminars at the prestigious Capgemini Institute.
Abstract
This article explores Habib Guergachi’s lecture on Web Oriented Architecture (WOA), which critiques traditional enterprise practices and advocates for a shift to distributed, hyper-scalable systems. Drawing from historical analogies and real-world examples like LinkedIn, Guergachi argues for abandoning monolithic architectures in favor of independent, reactive applications that leverage modern web protocols. The discussion analyzes the implications for software development, emphasizing innovation, scalability, and the rejection of outdated paradigms to ensure future competitiveness in the French and global IT landscape.
Contextualizing the Shift from Hyper-Integrated to Hyper-Distributed Systems
Guergachi begins by drawing a parallel between the decline of traditional industries, such as steel mills like Gandrange and Florange, and the potential obsolescence of current software engineering practices. He posits that modern IT specialists, akin to specialized workers in software factories, risk irrelevance if they fail to innovate. The core dilemma is the overemphasis on hyper-integrated systems, where enterprises purchase off-the-shelf software that imposes architectures dictated by vendors. This leads to rigid, costly structures that stifle adaptability.
In contrast, Guergachi introduces the concept of hyper-distributed architectures, inspired by web-oriented principles. He illustrates this with a cultural anecdote: a hypothetical Chinese viewer searching for a French film clip on ina.fr fails due to rigid, integrated search mechanisms, while Google succeeds through flexible, distributed intelligence. This highlights how integrated systems, often built around enterprise architecture, application servers, and service buses, create “bousins” – complex, unmaintainable assemblages of tools like CMS for content, transactional plugins, and adapters for legacy JSF applications.
The lecturer critiques the inefficiency of such systems, where decision-making processes involve dumping data into warehouses for analysis, rather than fostering real-time adaptability. He urges a generational shift: respecting past achievements that built foundational information systems but making way for younger developers to construct future-proof ones. Avoiding the trap of using ingenuity merely to bypass imposed integrations is crucial, as technological evolution accelerates.
Principles of Distributed Paradigms and Real-World Implementations
Central to Guergachi’s thesis is the advocacy for distributed paradigms over integrated ones. He references Play Framework, a French-origin technology (despite initial skepticism due to its nationality), as a tool for building independent applications. LinkedIn’s approach exemplifies this: constructing systems as separate components, each focused on core business logic, deployed autonomously. These might use various technologies but prioritize scalability, security, and reactivity.
In a distributed model, non-core functions like search are outsourced to specialized services, allowing internal applications to remain focused and resilient under load. Guergachi explains techniques such as eventual consistency for high-load scenarios and strict consistency only where necessary, like payment processing. Communication between applications relies on RESTful hypermedia over HTTP, rejecting heavy RPC protocols or plugins like Flash, which he derides as symptomatic of a “third-world syndrome” – adopting external technologies without deep understanding.
He envisions enterprises concentrating solely on core business, externalizing storage, CMS, back-office, and video management to superior providers. Performance concerns with HTTP are dismissed as psychological barriers; no in-house solution can compete with storage specialists. Applications will interconnect in a “spaghetti” manner, but one that ensures predictability and adaptability, mirroring the web’s organic structure.
Guergachi introduces entropy as a metaphor: solid (rigid, controlled architectures), liquid (flexible, scalable across servers), and gaseous (pervasive, occupying value chain interstices like Google). Enterprises must evolve toward gaseous states for survival, contrasting with legacy systems that “suck blood” through perpetual maintenance fees.
Implications for Innovation and the Role of French IT Genius
The lecturer delineates integrated paradigms – building overarching technical architectures without functional hypotheses, aiming for longevity – as flawed, akin to overpacking for unforeseen disasters. Distributed paradigms, conversely, tailor architectures per application, prioritizing functional solutions over technical absolutes. For instance, displaying cached content during network failures ensures usability, decided by business logic rather than rigid transactional rules.
A paradigm, per Guergachi, is a coherent worldview offering solutions to its own problems. He warns against half-measures, like deploying advanced frameworks on outdated servers, urging full commitment to distributed models despite risks like dismissal. Submitting to vendor-driven technologies prepares for shameful obsolescence, whereas bold shifts enable glory through innovation.
Critiquing entities like INPI’s outdated systems, he highlights France’s image issues, comparable to 1980s Korean cars. French IT genius, exemplified by talents like Guillaume Bort and Sadek Drobi, must harness business acumen. Concepts like Scalaz originated in France (at Camel), underscoring untapped potential.
The economy of the web remains to be fully realized; Silicon Valley leads but hasn’t won. French informatics must act through innovation serving functionality, user experience, and distributed architectures with increasing entropy. Mastering interconnection complexity yields value, constructing planetary software masterpieces to safeguard jobs and elevate France.
In conclusion, Guergachi’s call to action – rebooting mindsets Monday morning – emphasizes radical change for continuity. By embracing WOA, developers transcend traditional constraints, fostering systems that are open, secure, adaptable, and cost-effective, aligning with business evolutions.
Relevant Links and Hashtags
Links:
[DevoxxFR2012] Client/Server Apps with HTML5 and Java
Lecturer
James Ward embodies the archetype of the polyglot developer evangelist, bringing a wealth of experience that spans nearly two decades of Java development alongside deep expertise in web technologies and cloud platforms. Having started coding in Java as early as 1997, James initially cut his teeth on server-side frameworks before joining Adobe, where he championed Flex as a rich client technology and contributed to Java Community Process specifications including JSR 286, 299, and 301 for portlet standards. His tenure at Adobe honed his ability to bridge desktop-like experiences with web delivery, a theme that permeates his later work. By 2012, James had transitioned to Heroku as a Developer Advocate, where he focused on democratizing cloud deployment and promoting modern, API-driven architectures. Much like his passion for mountain climbing—which he often analogizes to the challenges of software development—James approaches technical problems with a blend of strategic planning and relentless iteration, seeking elegant solutions amid complex terrain. His presentations are characteristically hands-on, featuring live coding demonstrations that translate abstract concepts into tangible artifacts, making him a trusted voice in the Java and web development communities.
Abstract
James Ward articulates a compelling vision for the resurgence of client/server architectures in web development, leveraging the browser as a sophisticated client powered by HTML5, JavaScript, CSS, and complementary tools, while employing Java-based servers to deliver lightweight, API-centric services. Through an end-to-end live coding session, James demonstrates how to orchestrate a modern stack comprising jQuery for DOM manipulation, LESS for dynamic styling, Twitter Bootstrap for responsive design, CoffeeScript for concise scripting, and the Play Framework for robust backend services. He extends the discussion to cloud-native deployment strategies, utilizing Heroku for application hosting and Amazon CloudFront as a Content Delivery Network to optimize static asset delivery. The presentation meticulously analyzes the methodological advantages of this decoupled approach—enhanced responsiveness, independent release cycles, and superior scalability—while addressing practical concerns such as asset management through WebJars and performance optimization. James positions this architecture as the future of web applications, particularly for mobile-first, global audiences, offering profound implications for development velocity, maintenance overhead, and user experience in an increasingly heterogeneous device landscape.
The Renaissance of Client/Server: From Server-Rendered Monoliths to Decoupled Experiences
James Ward opens with a historical reflection on web architecture evolution, observing that after a decade dominated by server-side rendering frameworks such as JSP, JSF, and Ruby on Rails templates, the pendulum is swinging back toward a client/server model reminiscent of early thin-client applications—but now enriched by the browser’s matured capabilities. In this paradigm, the browser assumes responsibility for rendering rich, interactive interfaces using HTML5, CSS3, and JavaScript, while the server is reduced to a stateless API provider delivering JSON or other data formats over HTTP. This shift, James argues, is propelled by the proliferation of smartphones and tablets, which demand native-like responsiveness and offline functionality that server-rendered pages struggle to deliver efficiently. HTML5 standards—local storage, Web Workers, Canvas, and progressive enhancement—enable applications to function seamlessly across devices without native code, while responsive design principles ensure adaptability to varying screen sizes. James contrasts this with traditional approaches where server-side templates intertwine presentation and logic, creating tight coupling that complicates maintenance and slows iteration. By decoupling concerns, developers can evolve the user interface independently of backend changes, a flexibility that proves invaluable in agile environments where user feedback drives rapid UI refinements.
Front-End Ecosystem: Orchestrating Productivity with CoffeeScript, LESS, and Bootstrap
Delving into the client-side stack, James Ward conducts a live coding demonstration that showcases how modern tools dramatically amplify developer productivity while maintaining code quality. He begins with CoffeeScript, a language that compiles to JavaScript and eliminates much of the verbosity and pitfalls associated with raw JS syntax. By writing expressions such as square = (x) -> x * x, CoffeeScript generates clean, idiomatic JavaScript, reducing boilerplate and enhancing readability. James emphasizes that CoffeeScript’s significant whitespace and functional programming influences encourage a more declarative style, which aligns naturally with event-driven browser programming. Complementing this, LESS extends CSS with variables, mixins, and nested rules, transforming style sheets into programmable artifacts. For instance, defining @brand-color: #428bca; and reusing it across selectors eliminates duplication and facilitates theme switching. Twitter Bootstrap enters the equation as a comprehensive UI framework, providing pre-styled components—navigation bars, modals, grids—and a responsive grid system based on media queries. James demonstrates how a simple <div class="container"> with Bootstrap classes automatically adapts layout from desktop to mobile, obviating custom media query sprawl. Within the Play Framework, these assets are served through a unified pipeline that compiles CoffeeScript and LESS on-the-fly during development and minifies them for production, ensuring optimal performance without manual intervention. This orchestrated ecosystem, James asserts, enables small teams to deliver polished, professional interfaces in a fraction of the time required by hand-crafted HTML and CSS.
Backend as API: Play Framework’s Elegance in Service Design
On the server side, James Ward positions the Play Framework as an exemplary choice for building lightweight, stateless APIs that complement rich clients. Play’s Scala-based syntax offers concise controller definitions, where a route such as GET /api/tasks controllers.Tasks.list maps directly to a method returning JSON via Ok(Json.toJson(tasks)). This simplicity belies powerful features: asynchronous request handling via Akka actors, built-in JSON serialization, and seamless WebSocket support for real-time updates. James live-codes a task management endpoint that accepts POST requests with JSON payloads, validates them using Play’s form mapping, and persists to an in-memory store—illustrating how quickly a functional API can be prototyped. Client-side consumption is equally straightforward; jQuery’s $.ajax or the Fetch API retrieves data and dynamically renders it using Bootstrap templates. James highlights Play’s hot-reloading capability, where code changes trigger instant server restarts during development, eliminating the compile-deploy cycle that plagues traditional Java web applications. For persistence, while the demo uses in-memory storage, James notes seamless integration with relational databases via Anorm or JPA, and NoSQL options through third-party modules, underscoring Play’s versatility across data models.
Cloud-Native Deployment: Heroku and CDN Synergy
Deployment emerges as a cornerstone of James Ward’s vision, and he demonstrates the effortless path from local development to global production using Heroku and Amazon CloudFront. A simple heroku create followed by git push heroku master triggers an automated build process that compiles assets, runs tests, and deploys the application to a dynamically scaled cluster of dynos. Heroku’s add-on ecosystem provides managed PostgreSQL, Redis, and monitoring without operational overhead, embodying Platform-as-a-Service ideals. For static assets—JavaScript, CSS, images—James configures CloudFront as a CDN, caching content at edge locations worldwide to reduce latency and offload server load. Configuration involves setting cache headers in Play and pointing DNS to the CloudFront distribution, a process that takes minutes yet yields significant performance gains. James emphasizes versioning strategies: semantic versioning for APIs combined with cache-busting query parameters for assets ensures smooth upgrades without stale content issues. This cloud-native approach not only accelerates time-to-market but also aligns cost with usage, as Heroku scales dynos automatically and CloudFront bills per byte transferred.
Asset Management Revolution: WebJars and Dependency Convergence
A particularly innovative contribution James Ward introduces is WebJars, a convention for packaging client-side libraries—jQuery, Bootstrap, lodash—as standard JAR files consumable via Maven or Gradle. By declaring <dependency><groupId>org.webjars</groupId><artifactId>bootstrap</artifactId><version>5.3.0</version></dependency> in a POM, developers integrate front-end assets into the same dependency resolution pipeline as server-side libraries, eliminating the chaos of manually downloading and versioning scripts. Play’s asset pipeline automatically extracts these resources to the classpath, making them available via routes.Assets.at("lib/bootstrap/js/bootstrap.min.js"). James demonstrates creating a custom WebJar the night before the talk, packaging both minified and source versions, and stresses the importance of avoiding the historical mistake of scattering JARs in source trees. This unification streamlines builds, enables reproducible environments, and facilitates security patching through centralized dependency updates.
Methodological and Architectural Implications for Modern Web Development
James Ward synthesizes the architectural benefits of this client/server separation, noting that independent release cycles allow frontend teams to iterate on user experience without backend coordination, and vice versa. Responsive design via Bootstrap future-proofs applications against new device form factors, while HTML5’s progressive enhancement ensures graceful degradation on older browsers. Performance considerations—minification, concatenation, CDN caching—combine to deliver sub-second load times even on mobile networks. James addresses testing strategies: Jasmine for client-side unit tests, Specs2 for server-side, and Selenium for end-to-end flows, all integrated into the build pipeline. API versioning through URL paths or headers maintains backward compatibility as schemas evolve. The implications are profound: development velocity increases dramatically, maintenance burden decreases through modularization, and user satisfaction rises with fluid, native-like experiences. For enterprises transitioning from legacy portals, James advocates gradual migration—exposing existing services as JSON APIs while incrementally replacing UI with modern client code—minimizing risk while capturing immediate benefits.
Future Trajectories and Community Considerations
Looking ahead, James Ward anticipates continued maturation of HTML5 standards, broader adoption of Web Components for encapsulation, and potential successors to JavaScript such as Dart or WebAssembly, though he expresses skepticism about near-term displacement given browser ecosystem inertia. Tools like GWT, which compile Java to JavaScript, are acknowledged as viable alternatives for Java-centric teams, but James personally favors direct control over client-side code for maximum flexibility. The presentation closes with an invitation to contribute to WebJars and engage with the Play community, reinforcing open-source collaboration as a catalyst for innovation.
Links:
[DevoxxBE2012] The Advantage of Using REST APIs in Portal Platforms to Extend the Reach of the Portal
Rinaldo Bonazzo, a seasoned IT professional with extensive experience in project management and technology evangelism for Entando, highlighted the strategic benefits of integrating REST APIs into portal platforms during his presentation. Rinaldo, who has led initiatives in sectors like animal health and European community projects, emphasized how Entando, an open-source Java-based portal, leverages REST to facilitate seamless data exchange across diverse systems and devices.
He began by outlining Entando’s capabilities as a comprehensive web content management system and framework, enabling developers to build vertical applications efficiently. Rinaldo explained the decision to adopt JSR-311 (now part of Java EE 6) for RESTful services, which allows Entando to connect with external clients effortlessly. This approach minimizes development effort, as REST standardizes interactions using lightweight protocols like JSON or XML, making integration with web clients, smartphones, and tablets straightforward.
In a practical demonstration, Rinaldo showcased creating a service to publish open data across multiple devices. He illustrated how REST APIs provide a base URI for accessing resources, such as content, images, or entities, without the overhead of more complex protocols. This not only accelerates development but also ensures that portals can reach beyond traditional boundaries, fostering broader adoption within organizations.
Rinaldo stressed the importance of REST in modern architectures, where portals must interact with sensors, mobile apps, third-party services like BI tools or CRM systems, and even legacy applications. By collecting data from various sources—such as IoT devices in smart cities or user inputs from mobile forms—Entando exposes this information uniformly, supporting web browsers, extranets, and accessibility features for users with disabilities.
He shared real-world examples from Entando’s deployments, including portals for the Italian Civil Defense Department and the Ministry of Justice. These implementations prioritize accessibility, ensuring compliance with standards that allow visually impaired users to access content. Rinaldo pointed to the municipality of Cerea’s open data initiative, where REST APIs enable developers to retrieve resources like georeferenced data or submit requests via mobile apps, demonstrating practical extensions of portal functionality.
Furthermore, Rinaldo discussed security aspects, noting Entando’s use of OAuth for authorization, which secures API access with tokens. This ensures safe data exchange while maintaining openness.
Overall, Rinaldo’s insights underscored how REST APIs transform portals from isolated systems into interconnected hubs, enhancing reach and utility. By adhering to established standards, developers can innovate rapidly, integrating portals with emerging technologies and meeting diverse user needs effectively.
Extending Portal Functionality Through Integration
Rinaldo elaborated on the architectural advantages, where REST enables portals to act as central data aggregators. For instance, in smart city applications, APIs collect sensor data for traffic management, which portals then process and disseminate. Similarly, mobile integrations allow direct content insertion, as seen in Maxability’s iPhone app for Entando, where users submit georeferenced photos that portals geolocate and manage.
He highlighted government successes in Italy, where Entando’s portals support critical operations while ensuring inclusivity. Features like API documentation pages, as in Cerea’s developer portal, provide clear guidance on endpoints, methods, and parameters, lowering barriers for external developers.
Rinaldo concluded by inviting engagement with Entando’s community, reinforcing that REST not only extends reach but also promotes collaborative ecosystems. His presentation illustrated a shift towards open, extensible platforms that adapt to evolving digital landscapes.
Links:
How to know which versions of Xerces and Xalan are run in the JDK?
Run this command:
[java]java com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck[/java]