This document provides an overview of the Play! web framework for Java, including how it differs from traditional Java web development approaches by avoiding servlets, portlets, XML, EJBs, JSPs, and other technologies. It demonstrates creating a simple PDF generation application using Play!, including defining a model, controller, and view. The framework uses conventions over configuration and allows rapid development through features like automatic reloading of code changes and helpful error pages.
This was a talk given at Django District in March, 2016. It goes over the general gist of how to integrate Django Rest Framework with React and Redux. It also includes a github repo with working code, including using Webpack for Hot Reloading and Redux Dev Tools for time traveling state.
HTML5 is all the rage with the cool kids, and although there's a lot of focus on the new language, there's lots of interesting new JavaScript APIs both in the HTML5 spec and separated out. This presentation will take you through demos and code behind the new JavaScript APIs, and explore where these features can be used
Take a look at what Rails 5 has in store for you. We go through all the new features and improvements across development, testing, caching and much more. So let's dive in.
Akka and the Zen of Reactive System DesignLightbend
In order to be successful with asynchronous programming, when coming from synchronous execution models you need to change your mindset and look at things from a slightly different perspective. In order to use Akka at it's best, you will have to change the way you think about application design (loosen coupling in space and time between components), and re-think what you've maybe learned in the past.
In this talk we uncover a number of rules that serve as a guide in designing concurrent distributed applications, how those apply to Akka, and how they can help you in daily app development.
Aimed at developers through architects, Akka team happy hAkker, Konrad Malawski, bends your parameters with regards to application design and asynchronous execution models.
This was a talk given at Django District in March, 2016. It goes over the general gist of how to integrate Django Rest Framework with React and Redux. It also includes a github repo with working code, including using Webpack for Hot Reloading and Redux Dev Tools for time traveling state.
HTML5 is all the rage with the cool kids, and although there's a lot of focus on the new language, there's lots of interesting new JavaScript APIs both in the HTML5 spec and separated out. This presentation will take you through demos and code behind the new JavaScript APIs, and explore where these features can be used
Take a look at what Rails 5 has in store for you. We go through all the new features and improvements across development, testing, caching and much more. So let's dive in.
Akka and the Zen of Reactive System DesignLightbend
In order to be successful with asynchronous programming, when coming from synchronous execution models you need to change your mindset and look at things from a slightly different perspective. In order to use Akka at it's best, you will have to change the way you think about application design (loosen coupling in space and time between components), and re-think what you've maybe learned in the past.
In this talk we uncover a number of rules that serve as a guide in designing concurrent distributed applications, how those apply to Akka, and how they can help you in daily app development.
Aimed at developers through architects, Akka team happy hAkker, Konrad Malawski, bends your parameters with regards to application design and asynchronous execution models.
Slides from GeoDjango talk given by Eric Palakovich Carr. Last given in Washington, D.C. for django-district meetup on July 27th, 2011.
http://www.meetup.com/django-district/events/16015696/
Source code hosted on github:
https://github.com/bigsassy/geodjango_talk
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rulesSrijan Technologies
Speaker: Josef Dabernig a.k.a Dasjo
This webinar takes a look at how to automate some powerful backend capabilities for your Drupal site, using the Drupal 8 Rules. Take a look at how D8 Rules can change the way we build sites. Also, learn how you can contribute to getting Rules closer to a stable release.
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
Slides contain RESTful solutions based on Python frameworks like Flask and Django. The presentation introduce in REST concept, presents benchmarks and research for best solutions, analyzes performance problems and shows how to simple get better results. Finally presents soruce code in Flask and Django how to make your own RESTful API in 15 minutes.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
Bring your Spring knowledge up-to-date by attending this workshop.
Instead of diving into functionality which was already there in older Spring versions, we will focus on the new Spring 4 features. We will however point out small API differences.
The structure of the Workshop will be as follows:
1. Java SE & Java EE support
2. Spring Core
3. Spring WebMVC
4. WebSockets & Messaging
5. Testing Improvements
The way JavaScript is standardized and improved is changing this year. Learning how will help you understand why transpilers have become so popular, and why we will likely be using them for a long time.
Ember itself will need to adapt to changes in JavaScript, and we will take a look at how the existing object model might be migrated to a pure EcmaScript solution.
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Adding a modern twist to legacy web applicationsJeff Durta
Avoid misery of working with legacy code
We will see how you can add independent and isolated components to existing pages; pages that may be difficult to change
React and Flux allow you to make self-contained additions that handle their own data access/persistence
“Use the right tool for the right job” is one of the first thing they teach you when you start out in these waters. I would make “Get to really know your tools” a second.
In this talk we’re going to work on the architecture of an app that showcases some common features/scenarios we all probably already have in the apps we’re working on: counters, leaderboards, queuing, timelines, caching. But this time we’ll implement them with Redis, making the apps much faster, your hardware (and you) much cooler, your boss (and the clients) much happier and hopefully your salary a bit higher.
Slides from GeoDjango talk given by Eric Palakovich Carr. Last given in Washington, D.C. for django-district meetup on July 27th, 2011.
http://www.meetup.com/django-district/events/16015696/
Source code hosted on github:
https://github.com/bigsassy/geodjango_talk
[Srijan Wednesday Webinars] Ruling Drupal 8 with #d8rulesSrijan Technologies
Speaker: Josef Dabernig a.k.a Dasjo
This webinar takes a look at how to automate some powerful backend capabilities for your Drupal site, using the Drupal 8 Rules. Take a look at how D8 Rules can change the way we build sites. Also, learn how you can contribute to getting Rules closer to a stable release.
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
Slides contain RESTful solutions based on Python frameworks like Flask and Django. The presentation introduce in REST concept, presents benchmarks and research for best solutions, analyzes performance problems and shows how to simple get better results. Finally presents soruce code in Flask and Django how to make your own RESTful API in 15 minutes.
These are the slides for the talk given at https://www.meetup.com/South-Florida-Software-Testing/events/233980212
Short summary:
KISS (Keep It Simple Stupid) techniques and practices in Web UI Automation on topics:
- selenium webdriver vs wrappers
- XPath vs CSS Selectors + Selene
- End to End vs Atomic tests
- Pretty vs Simple reports
- BDD vs XUnit style of tests
- PageObject vs PageModules (OOP vs Procedural/Modular programming)
Bring your Spring knowledge up-to-date by attending this workshop.
Instead of diving into functionality which was already there in older Spring versions, we will focus on the new Spring 4 features. We will however point out small API differences.
The structure of the Workshop will be as follows:
1. Java SE & Java EE support
2. Spring Core
3. Spring WebMVC
4. WebSockets & Messaging
5. Testing Improvements
The way JavaScript is standardized and improved is changing this year. Learning how will help you understand why transpilers have become so popular, and why we will likely be using them for a long time.
Ember itself will need to adapt to changes in JavaScript, and we will take a look at how the existing object model might be migrated to a pure EcmaScript solution.
Writing code as an individual and writing code as part of the team are two very different things. Learn the tips and tricks for writing JavaScript code as part of the team so that your code will continue to work for years to come.
Adding a modern twist to legacy web applicationsJeff Durta
Avoid misery of working with legacy code
We will see how you can add independent and isolated components to existing pages; pages that may be difficult to change
React and Flux allow you to make self-contained additions that handle their own data access/persistence
“Use the right tool for the right job” is one of the first thing they teach you when you start out in these waters. I would make “Get to really know your tools” a second.
In this talk we’re going to work on the architecture of an app that showcases some common features/scenarios we all probably already have in the apps we’re working on: counters, leaderboards, queuing, timelines, caching. But this time we’ll implement them with Redis, making the apps much faster, your hardware (and you) much cooler, your boss (and the clients) much happier and hopefully your salary a bit higher.
HTML 5 provides us with all sorts of new abilities as web designers. We have new tags and attributes, richer form fields, client-side storage, and more. We’ll talk about how you can start using these features today and how to use them in a cross-browser friendly manner.
Presentation for azPHP on setting up a new project using Zend_Tool. Also goes over creating basic modules, controllers, actions, models and layouts.
All code in the presentation has not necessarily been tested. Will update presentation when done.
Javascript and first-class citizenry: require.js & node.js
Javascript on web pages is ubiquitous and its problems are legendary. Javascript, seen as a second-class code citizen, is usually hacked together even by seasoned developers. New libraries (jQuery, prototype, backbone, knockout, underscore) and runtime tools (firebug, jasmine) look like they solve many problems - and they do. But they still leave poorly written code as just that. One key problem is that all javascript code lives globally and this results in poorly managed, tested and delivered code.
In this session, I will illustrate that we can treat javascript as a first-class citizen using with require.js and node.js: it can be modular, encapsulated and easily unit tested and added to continuous integration cycle. The dependencies between javascript modules can also be managed and packaged just like in C# and Java. In the end, we can resolve many javascript difficulties at compile time rather than waiting until runtime.
This DrupalCon 2019 Amsterdam talk provides a look beyond the world of PHP and Javascript. It explores how other languages such as Ruby, Java, Rust and Perl handle things and highlights some interesting features of those languages. Not all the things that other languages can do can be done in PHP or Javascript but the concepts and ideas can still be used.
RSVP Node.js class at www.nycdatascience.com
NYC data science academy's free workshop, given at NYC Open Data Meetup, http://www.meetup.com/NYC-Open-Data/events/163300552/
Everything is Awesome - Cutting the Corners off the WebJames Rakich
The web is awesome despite it's detractors. But we can't forget our fundamentals when we're trying to forge ahead with new tech. This talk is about how to approach the building blocks of the web in a way that takes advantage of their strengths and avoids their weaknesses.
Sprockets is an easy solution to managing large JavaScript codebases by letting you structure it, bundle it with related assets, and consolidate it as one single file, with pre-baked command-line tooling, CGI front and Rails plugin. It's a framework-agnostic open-source solution that makes for great serving performance while helping you structure and manage your codebase better.
Given at TechMaine's Java Users Group on Feb 26 2008
Why do we need another build tool when we already have Ant? By focusing on convention over configuration, Maven allows you to declaratively define how your project is built, which reduces a lot of the procedural code that you'd need to implement in every build file if you were using Ant. This, along with Maven's built-in management of repositories for project dependencies, allows you to streamline your build process. Ultimately Maven can reduce the amount of time that would otherwise be wasted hunting down jar files and fiddling with boilerplate build scripts.
This presentation covers Maven's core concepts. It introduces the Plugin architecture, and explain how the most popular plugins are used. It also covers the POM concept and how it relates to dependency tracking and repositories.
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
09 - Express Nodes on the right Angle - Vitaliy Basyuk - IT Event 2013 (5)
60 вузлів під правильним кутом - миттєва розробка програмних додатків використовуючи Node.js + Express + MongoDB + AngularJS.
Коли ми беремось за новий продукт, передусім ми думаємо про пристрасть, яка необхідна йому, щоб зробити користувача задоволеним і відданим нашому баченню. А що допомагає нам здобути прихильність користувачів? Очевидно, що окрім самої ідеї, також важлими будуть: зручний користувацький інтерфейс, взаємодія в реальному часі та прозора робота з даними. Ці три властивості ми можемо здобути використовучи ті чи інші засоби, проте, коли все лиш починається, набагато зручніше, якщо інструменти допомагають втілити бажане, а не відволікають від головної мети.
Ми розглянемо процес розробки, використовуючи Node.js, Express, MongoDB та AngularJS як найбільш корисного поєднання для отримання вагомої переваги вже на старті вашого продукту.
Віталій Басюк
http://itevent.if.ua/lecture/express-nodes-right-angle-rapid-application-development-using-nodejs-express-mongodb-angular
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
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.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
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.
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.
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
1. Having Fun with
or, how a perfectly normal
dynamic language developer
fell in love with Java
Clinton R. Nixon, Viget Labs
2. i am a robot come
About Me from the year 2082
in order to prevent
java from becoming
stale and borinG
3. “We are fully aware that we made choices that are pretty
uncommon in the Java world, and that Play does not
blindly follow all the so-‐called Java ‘good practices’. But
all members of the Play teams are very experienced Java
developers and we are totally aware of the choices we
made and the rules we broke.
“Java itself is a very generic programming language and
not originally designed for web application development.
It is a very different thing to write a generic and reusable
Java library and to create a web application. A web
application itself doesn’t need to be designed to be
reusable. You need less abstraction, less conEiguration.
Reusability does exist for Web applications, but through
Web service API rather than language-‐level integration.”
– Guillaume Bort, from the Play! FAQ (emphasis mine)
4. What is Play!?
(a) A web framework with unnecessary punctation
in its name that I am now dropping.
(b) A web framework written in Java that doesn’t
use servlets, portlets, XML, EJBs, JSPs, or PCP.
(c) A share-‐nothing, REST-‐aware, super-‐fast, MVC-‐
structured web framework that takes the best
from Ruby on Rails, Django, and the like and
adds its own strengths.
(d) All of the above.
5. Our example app: PDFless
A way to build PDFs
using simple tools:
HTML + CSS.
Good candidate for a
system like Play. Uses
FlyingSaucer, a Java
library.
6. Starting our app
cnixon@moro ~/Projects> play new pdfless
~ _ _
~ _ __ | | __ _ _ _| | Look at tha t ASCII art!
~ | '_ | |/ _' | || |_|
~ | __/|_|____|__ (_) Now we’re having fun.
~ |_| |__/
~
~ play! 1.1-‐unstable-‐r785, http://www.playframework.org
~
~ The new application will be created in /Users/cnixon/Projects/pdfless
~ What is the application name? PDFless
~
~ OK, the application is created.
~ Start it with : play run pdfless
~ Have fun!
8. Creating our model
package models;
import play.data.validation.Email;
app/models/Document.java
import play.data.validation.Required;
public fields
import play.data.validation.URL;
import play.db.jpa.Model;
import javax.persistence.Entity;
@Entity
public class Document extends Model {
@Required @URL
public String url;
@Required @Email
public String email;
@Required
public boolean processed; annotations for validation
public Document(String url, String email) {
this.url = url;
this.email = email;
this.processed = false;
}
}
9. Where’s the database?
# Database configuration
# ~~~~~
# To quickly set up a development database, use either:
# -‐ mem : for a transient in memory database (HSQL in memory)
# -‐ fs : for a simple file written database (HSQL file stored)
db=fs
# for testing, I’m using an in-memory DB
# To connect to a local MySQL5 database, use:
# db=mysql:user:pwd@database_name
#
# If you need a full JDBC configuration use the following :
# db.url=jdbc:postgresql:database_name
# db.driver=org.postgresql.Driver
# db.user=root
# db.pass=secret
There’s no migration system:
Hibernate will auto-update your
tables unless you configure it otherwise.
13. A simple controller
package controllers;
import models.Document;
What does this remind me of?
import play.data.validation.Valid;
import play.mvc.Controller;
public class Documents extends Controller {
public static void index() {
render();
}
public static void create(@Valid Document doc) {
if (validation.hasErrors()) {
render("Documents/index.html");
} else {
doc.save();
}
}
}
14. Ok, this smells like a train yard
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
this took some getting used to
# Home page
GET / Documents.index
GET /documents Documents.index
POST /documents Documents.create
# Map static resources from the /app/public folder to their paths
GET /public/ staticDir:public
# Catch all
* /{controller}/{action} {controller}.{action}
sigh - but it is helpful with rapid development
16. In case you didn’t catch that
• No compiling
• Awesome error pages
• Request params bind to
controller method
params
17. Let’s see that redirection code
This is hard to understand,
if (Modifier.isPublic(ctMethod.getModifiers()) &&
((ctClass.getName().endsWith("$") &&
but look at this!
!ctMethod.getName().contains("$default$")) ||
(Modifier.isStatic(ctMethod.getModifiers()) &&
ctMethod.getReturnType().equals(CtClass.voidType))) &&
!isHandler) {
try {
ctMethod.insertBefore(
"if(!
play.classloading.enhancers.ControllersEnhancer.ControllerInstrumentation.isActionCallAllowed
()) {"+
"play.mvc.Controller.redirect(""+ctClass.getName().replace("$", "")+
"."+ctMethod.getName()+"", $args);"+
"}"+
"play.classloading.enhancers.ControllersEnhancer.ControllerInstrumentation.stopActionCall();"
);
} catch (Exception e) { ... }
}
18. Translation to human
Before each method, add “If we’re already in an action call
ctMethod.insertBefore(
"if(!play.classloading.enhancers.
ControllersEnhancer.ControllerInstrumentation.
isActionCallAllowed()) {"+
"play.mvc.Controller.redirect(""+ send a redirect
ctClass.getName().replace("$", "")+ to this new
"."+ctMethod.getName()+"", $args);"+ action
"}"+ to the browser
"play.classloading.enhancers.
ControllersEnhancer.ControllerInstrumentation.
stopActionCall();"
);
and stop the original action.”
20. #{extends 'main.html' /} this is Groovy
#{set title:'PDFLess' /}
#{ifErrors}
<div class="error">Please correct the errors below.</div>
#{/ifErrors}
#{form @Documents.create()}
<p>
<label for="doc.url">Enter the URL to make a PDF out of:</label>
<input type="text" id="doc.url" name="doc.url" value="${params['doc.url']}"/>
#{ifError 'doc.url'}
<span class="error">#{error 'doc.url' /}</span>
#{/ifError}
</p> this is gross
<p>
<label for="doc.email">Enter the email address to send your PDF to:</label>
<input type="text" id="doc.email" name="doc.email"
value="${params['doc.email']}"/>
#{ifError 'doc.email'}
<span class="error">#{error 'doc.email' /}</span>
#{/ifError}
</p>
<input type="submit" id="doc.submit" />
#{/form}
but this is kind of
awesome
21. tags are just
app/views/tags/textField.html
<p> HTML + Groovy
<label for="${_arg}">#{doBody /}</label>
<input type="text" id="${_arg}" name="${_arg}" value="${params[_arg]}"/>
#{ifError _arg}
<span class="error">#{error _arg /}</span>
#{/ifError}
</p> and are used like
app/views/Documents/index.html built-in tags
#{form @Documents.create()}
#{textField 'doc.url'}Enter the URL to make a PDF out of:#{/textField}
#{textField 'doc.email'}
Enter the email address to send your PDF to:
#{/textField}
#{textField 'code'}Please type the code below:#{/textField}
<p>
<input type="hidden" name="randomID" value="${randomID}" />
<img class="captcha" src="@{Application.captcha(randomID)}" />
</p>
<input type="submit" id="doc.submit" value="Make My PDF" />
#{/form}
32. Young, but shows promise
The mailing list for Play is
very active, and new
modules are being created
all the time.
Reminds me of Rails
around 1.0.
Could easily blow up;
could easily slowly die off.
33. Awesome things we don’t have time for
• Suspendable requests
• Easiest Eile uploads ever
• Bespin module to code your application inside your
application
• Automatic type extensions in templates
• Simple i18n
34. Summary
Play comes to Java with as few preconceptions as
possible.
It hooks into existing Java libraries easily.
It’s surprisingly fun to use and quick to develop with.
It’s a project with lots of room for individuals to
make a difference.
If you liked this talk, please http://playframework.org
consider donating to the
Buy Clinton IntelliJ fund.
http://crnixon.org
My free tial ends in 3 days. @crnixon