Patrick Chanezon and Guillaume Laforge are presenting Google App Engine Java and Gaelyk, the lightweight groovy toolkit on top of the GAE SDK, at the Devoxx conference
Chaitanya Mehandru presented on cloud computing and Google Apps. The presentation introduced cloud computing models including infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS). Google App Engine was discussed as an example of PaaS, allowing developers to build and host applications without managing infrastructure. Google Apps products for business such as Gmail, Calendar, and Docs were also presented. Student projects using Google technology were shared, including an app scheduler built on Google App Engine. The presentation concluded with information on certification paths and training resources for Google Apps.
This document provides an overview of Google App Engine, including what cloud computing is, the different types of cloud computing models, how App Engine provides a scalable infrastructure, the programming languages and frameworks supported, how data is stored and accessed via the datastore, services available on App Engine like caching, task queues, and mail, and tips for testing and deploying App Engine applications.
Part I: Introduction to Cloud Computing
- What is Cloud Computing?
- Classification of Cloud Computing
Part II: Introduction to Google App Engine
- What is Google App Engine?
- Why Google App Engine?
- Core APIs & Language Support
- Google App Engine for Business
- Google App Engine Customers
- Q&A
Google App Engine allows users to host web applications on Google's infrastructure without having to maintain servers or databases. It provides automatic scaling, free quotas for storage and bandwidth usage, and a simple deployment process. The document provides an overview of App Engine, including how to get started, the services it offers like Datastore and Memcache, and best practices for building scalable applications on the platform.
Introduction to Google App Engine talk delivered 2010 Jul 16 at EuroPython in Birmingham, UK and 2010 Jul 22 at the GTUG in London by Wesley Chun, Developer Advocate for Google.
Google App Engine tutorial for Java. Demonstrates how to open an account, setup a connection between your server and an Android app and some more features of GAE.
Google App Engine is a platform as a service (PaaS) released by Google in 2008 that allows users to build and host web applications in Google's infrastructure. It provides automatic scaling, load balancing, data storage and APIs for common services like user authentication. Developers code applications using languages like Java or Python and deploy them without having to worry about provisioning servers, running databases or managing middleware. The platform handles tasks like code and traffic management automatically behind the scenes.
The document introduces Google App Engine (GAE). It discusses that GAE allows developers to build applications that run on Google's infrastructure, providing scalability and efficiency. It also overview cloud computing concepts and GAE's features like dynamic web applications, data storage, and additional services. Finally, it provides a toy example of a GAE application and how to develop applications using the Python SDK.
Google App Engine is a platform as a service (PaaS) cloud computing platform for developing and hosting web applications in Google-managed data centers.
Google Cloud - Scale With A Smile (Dec 2014)Ido Green
"Google's ability to build, organize, and operate a huge network of servers and fiber-optic cables with an efficiency and speed that rocks physics on its heels. This is what makes Google Google: its physical network, its thousands of fiber miles, and those many thousands of servers that, in aggregate, add up to the mother of all clouds.” - Wired
---
Well, Wired hit the nail on the head with this quote about our platform. In this presentation we cover most of the new interesting features that will give you the ability to scale with (a big) smile!
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Chris Schalk
This is a presentation given by Google Developer Advocate Chris Schalk at Cloud Expo in NYC on June 8th 2011 on building enterprise applications with Google's Cloud Platform.
Google App Engine is a platform for building and hosting web applications in Google's cloud. It allows developers to build, run, and maintain applications without having to manage infrastructure. Some key features include automatic scaling for traffic, simple administration, and a free usage tier. Over 250,000 developers have built over 250 million apps on App Engine using languages including Java, Python, PHP and JavaScript.
A review and update presentation on Google App Engine's latest features up through version 1.5.3 and including new experimental features. This presentation was given to the San Diego GTUG on Aug 26, 2011.
The document discusses Google App Engine (GAE), a platform as a service (PaaS) offering from Google Cloud Platform. It provides an overview of cloud computing models including infrastructure as a service (IaaS), PaaS, and software as a service (SaaS). GAE allows developers to build and host web applications on Google's infrastructure and supports applications written in Python, Java, Go, and PHP. Examples of using GAE to host websites and build applications using Google Maps are also presented.
This document discusses Google App Engine, including its architecture as a platform-as-a-service that allows building and hosting web apps on Google's infrastructure, providing automatic scaling, load balancing, and a datastore. It outlines advantages like ease of use, scalability and lower costs, as well as challenges around dependence on Google and potential lock-in. The document concludes by noting Google App Engine's growth but also increased competition in the platform-as-a-service market.
Mr. Suraj Mehta submitted a seminar report on "Google App Engine" to the Department of Computer Engineering at KJ's Educational Institute in Pune, India. The report provides an overview of Google App Engine, including how it works, its storage management, development workflow, quotas and limits, and a proposed framework for using App Engine for parameter studies. It also discusses advantages, disadvantages, and compares App Engine to other cloud platforms. The seminar guide and HOD of the Computer Engineering department certified that Mehta satisfactorily completed the report as required.
These slides are made for the 2013 DevFest talks. It covers the main blocks of Google cloud platform: App engine, Compute Engine, storage options and more.
This document provides an introduction and overview of Google App Engine (GAE). It discusses what GAE is, the benefits of using it, and how to get started developing applications on GAE using languages like Python and Java. It also covers how to authenticate GAE apps using Google authentication, call the Google Calendar API, and use Google Cloud SQL for databases. The goal is to explain the basics of the GAE platform and services to help developers build scalable apps.
App Engine Overview @ Google Hackathon SXSW 2010Chris Schalk
This is an overview presentation on Google App Engine. This was given at the Google hackathon @ SXSW Interactive, 2010.
bit.ly/googlehackathonsxsw
bit.ly/gcodelabs
Presentation copy of Google App Engine with hands-on presented at Cloud Computing Workshop at VTU,2014. Explored the fundamentals of Google App Engine and its features.
Also covers the instructions to set GAE locally and later to deploy on appengine.
This document discusses cloud computing and Google App Engine. It provides an overview of Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS) and examples of each from Google. Google App Engine is described as a platform built on Google's infrastructure that allows hosting web applications and provides APIs, runtimes including Python, Java, and Go, and other features like caching and email sending. Limitations of App Engine are also listed such as not having native threads or sockets.
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Ido Green
What is new and hot on Google Cloud?
How can you work like a pro with some (or all) the new APIs and services... Here are some good starting points to follow.
Apps are software programs that run on devices like phones, computers, or online. Google Apps are a suite of online services and applications provided by Google. Google App Engine allows developers to host web applications on Google's servers and infrastructure. It provides automatic scaling, high availability, security, and is easy to use. Developers can get started for free with App Engine and pay only for additional resources needed beyond free usage limits.
Building what's next with google cloud's powerful infrastructureMediaAgility
Building What's Next with Google Cloud's Powerful Infrastructure. Companies are facing increasing challenges
Be more data driven, but on-prem data is hard to access, analyze, and use
Have to focus to stay ahead of competition, can’t afford wasted efforts
Attract and retain customers and employees with great experiences
Security threats keep growing
Be more agile - turn IT into competitive advantage
Google is focused on helping companies meet those challenges. To know more feel free to explore these slides and write back to us.
The document provides an overview of Google Cloud Platform (GCP) training. It discusses key GCP services and tools like Compute Engine, Storage, Databases, Containers, Dataflow, APIs, and deployment services. It also covers setting up a GCP account, managing services, identity and access management, networking, security concepts, monitoring with Stackdriver, and strategies for migrating applications to GCP. The training aims to help students learn how to use GCP services to build, deploy and manage cloud applications and infrastructure.
Overview of Google Cloud products for Developers, to build, sell and monetize web apps: Google Apps Marketplace, App Engine, App Engine for Business, Google Storage, Prediction and BigQuery APIs.
This document summarizes a case study of Google Cloud Platform presented by David Chen. It describes the agenda for the event which included an opening, keynote presentation, break, and self-introductions. It then provides background on David Chen and introduces the case study of a leading UK gaming company that built its social gaming infrastructure on Google Cloud Platform. Finally, it discusses why experience sharing is important and encourages learning how to properly scale applications and build large companies using Taiwan's technology and communities.
Cloud Computing Bootcamp On The Google App Engine v1.2.1Matthew McCullough
This document provides an overview of Google App Engine, a platform for hosting web applications on Google's infrastructure. It discusses the basics of cloud computing, how App Engine compares to other platforms like Amazon EC2 and Rackspace, and the technology stack and limitations of developing applications on App Engine, including its use of Python and Java, databases like BigTable, and pricing and administration tools. It concludes by recommending giving App Engine a try and provides some example applications and additional resources.
Introduction to Google App Engine Features and Limitations. Zope 3 Limitations and refactored packages, disabled packages, datastorestorage for ZODB. Grok at GAE.
Google App Engine is a platform as a service (PaaS) cloud computing platform for developing and hosting web applications in Google-managed data centers.
Google Cloud - Scale With A Smile (Dec 2014)Ido Green
"Google's ability to build, organize, and operate a huge network of servers and fiber-optic cables with an efficiency and speed that rocks physics on its heels. This is what makes Google Google: its physical network, its thousands of fiber miles, and those many thousands of servers that, in aggregate, add up to the mother of all clouds.” - Wired
---
Well, Wired hit the nail on the head with this quote about our platform. In this presentation we cover most of the new interesting features that will give you the ability to scale with (a big) smile!
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Chris Schalk
This is a presentation given by Google Developer Advocate Chris Schalk at Cloud Expo in NYC on June 8th 2011 on building enterprise applications with Google's Cloud Platform.
Google App Engine is a platform for building and hosting web applications in Google's cloud. It allows developers to build, run, and maintain applications without having to manage infrastructure. Some key features include automatic scaling for traffic, simple administration, and a free usage tier. Over 250,000 developers have built over 250 million apps on App Engine using languages including Java, Python, PHP and JavaScript.
A review and update presentation on Google App Engine's latest features up through version 1.5.3 and including new experimental features. This presentation was given to the San Diego GTUG on Aug 26, 2011.
The document discusses Google App Engine (GAE), a platform as a service (PaaS) offering from Google Cloud Platform. It provides an overview of cloud computing models including infrastructure as a service (IaaS), PaaS, and software as a service (SaaS). GAE allows developers to build and host web applications on Google's infrastructure and supports applications written in Python, Java, Go, and PHP. Examples of using GAE to host websites and build applications using Google Maps are also presented.
This document discusses Google App Engine, including its architecture as a platform-as-a-service that allows building and hosting web apps on Google's infrastructure, providing automatic scaling, load balancing, and a datastore. It outlines advantages like ease of use, scalability and lower costs, as well as challenges around dependence on Google and potential lock-in. The document concludes by noting Google App Engine's growth but also increased competition in the platform-as-a-service market.
Mr. Suraj Mehta submitted a seminar report on "Google App Engine" to the Department of Computer Engineering at KJ's Educational Institute in Pune, India. The report provides an overview of Google App Engine, including how it works, its storage management, development workflow, quotas and limits, and a proposed framework for using App Engine for parameter studies. It also discusses advantages, disadvantages, and compares App Engine to other cloud platforms. The seminar guide and HOD of the Computer Engineering department certified that Mehta satisfactorily completed the report as required.
These slides are made for the 2013 DevFest talks. It covers the main blocks of Google cloud platform: App engine, Compute Engine, storage options and more.
This document provides an introduction and overview of Google App Engine (GAE). It discusses what GAE is, the benefits of using it, and how to get started developing applications on GAE using languages like Python and Java. It also covers how to authenticate GAE apps using Google authentication, call the Google Calendar API, and use Google Cloud SQL for databases. The goal is to explain the basics of the GAE platform and services to help developers build scalable apps.
App Engine Overview @ Google Hackathon SXSW 2010Chris Schalk
This is an overview presentation on Google App Engine. This was given at the Google hackathon @ SXSW Interactive, 2010.
bit.ly/googlehackathonsxsw
bit.ly/gcodelabs
Presentation copy of Google App Engine with hands-on presented at Cloud Computing Workshop at VTU,2014. Explored the fundamentals of Google App Engine and its features.
Also covers the instructions to set GAE locally and later to deploy on appengine.
This document discusses cloud computing and Google App Engine. It provides an overview of Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS) and examples of each from Google. Google App Engine is described as a platform built on Google's infrastructure that allows hosting web applications and provides APIs, runtimes including Python, Java, and Go, and other features like caching and email sending. Limitations of App Engine are also listed such as not having native threads or sockets.
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Ido Green
What is new and hot on Google Cloud?
How can you work like a pro with some (or all) the new APIs and services... Here are some good starting points to follow.
Apps are software programs that run on devices like phones, computers, or online. Google Apps are a suite of online services and applications provided by Google. Google App Engine allows developers to host web applications on Google's servers and infrastructure. It provides automatic scaling, high availability, security, and is easy to use. Developers can get started for free with App Engine and pay only for additional resources needed beyond free usage limits.
Building what's next with google cloud's powerful infrastructureMediaAgility
Building What's Next with Google Cloud's Powerful Infrastructure. Companies are facing increasing challenges
Be more data driven, but on-prem data is hard to access, analyze, and use
Have to focus to stay ahead of competition, can’t afford wasted efforts
Attract and retain customers and employees with great experiences
Security threats keep growing
Be more agile - turn IT into competitive advantage
Google is focused on helping companies meet those challenges. To know more feel free to explore these slides and write back to us.
The document provides an overview of Google Cloud Platform (GCP) training. It discusses key GCP services and tools like Compute Engine, Storage, Databases, Containers, Dataflow, APIs, and deployment services. It also covers setting up a GCP account, managing services, identity and access management, networking, security concepts, monitoring with Stackdriver, and strategies for migrating applications to GCP. The training aims to help students learn how to use GCP services to build, deploy and manage cloud applications and infrastructure.
Overview of Google Cloud products for Developers, to build, sell and monetize web apps: Google Apps Marketplace, App Engine, App Engine for Business, Google Storage, Prediction and BigQuery APIs.
This document summarizes a case study of Google Cloud Platform presented by David Chen. It describes the agenda for the event which included an opening, keynote presentation, break, and self-introductions. It then provides background on David Chen and introduces the case study of a leading UK gaming company that built its social gaming infrastructure on Google Cloud Platform. Finally, it discusses why experience sharing is important and encourages learning how to properly scale applications and build large companies using Taiwan's technology and communities.
Cloud Computing Bootcamp On The Google App Engine v1.2.1Matthew McCullough
This document provides an overview of Google App Engine, a platform for hosting web applications on Google's infrastructure. It discusses the basics of cloud computing, how App Engine compares to other platforms like Amazon EC2 and Rackspace, and the technology stack and limitations of developing applications on App Engine, including its use of Python and Java, databases like BigTable, and pricing and administration tools. It concludes by recommending giving App Engine a try and provides some example applications and additional resources.
Introduction to Google App Engine Features and Limitations. Zope 3 Limitations and refactored packages, disabled packages, datastorestorage for ZODB. Grok at GAE.
This document provides an overview of a workshop on using technology for fun and profit. The workshop covers troubleshooting computer problems, using the internet and Office programs, and sharing content online through social media and blogs. Participants will learn strategies for troubleshooting, increase their computer knowledge, and learn how to apply directions to create content. They will also learn about ethics, giving credit, and sharing within copyright laws. The workshop includes making matching games and labeled pictures in Office programs.
Small game created in 2012 in 3 weeks.
Have fun to create game, try to improve my java and way of coding. Use of Game State Pattern.
Done after my first project "Origins" so I could do better and do a proper object-oriented project.
Developing a Cross Platform Game with Java & HTML5Josep Prat
Do you want to create a cross-platform game and you don't want to die developing for different native platforms? In this session you will learn how to build a successful game that runs on any device taking advantage of the cross-platform capabilities of HTML 5. GameDuell’s HTML5 Game Architect Josep Prat will deliver a bottom-up journey from the backend strategies backed up by Java, to the architectural design of the HTML 5 client. Starting by defining what is true cross-platform architecture he will proceed to discuss the available technologies and their advantages and restrictions. From websockets, over long polling, CSS 3 transformations to protocols different aspects of an efficient and lean development process will be introduced by him. Josep will also explain how to structure a cross-platform project in the correct layers and conclude his talk with a live demo of a GameDuell prototype to showcase an efficient approach for a hands-on usage in efficient development projects.
The document provides an overview of Google App Engine (GAE), including available services, common use cases, and best practices for developing applications on the platform. It discusses how GAE offers scalable hosting as a Platform as a Service (PaaS), with free quotas and no server management required. The document also outlines common strategies for structuring GAE applications, accessing data storage and APIs, and deploying code.
All inclusive prefab smart design houses are fully furnished and equipped houses that are ready to move into. They have modern exterior and interior designs and are built using sustainable materials. They can be delivered and installed within 2-6 months, providing a fixed budget with no unexpected costs. The houses are built indoors under strict supervision to ensure high quality.
Brief introduction of Google App Engine and Play Framework.
Step-by-step instruction to develop and deploy play! web App on GAE with Siena persistence layer, CRUD management interface and login support.
At Nokia entertainment we provide music and books to millions of customers around the world every day. Join us for a peek behind the scenes into the architecture we use and how we survive at a global scale.
Developing Java Web Applications In Google App EngineTahir Akram
The document provides an overview of developing Java-based web applications using Google App Engine. It discusses the key features and services of GAE including the runtime environment, datastore, memcache, mail, task queues, images, cron jobs, and user authentication. It also covers limitations, demo examples, and resources for learning more.
It is no accident that Xen software powers some of the largest Clouds in existence. From its outset, the Xen Project was intended to enable what we now call Cloud Computing. This session will explore how the Xen Architecture addresses the needs of the Cloud in ways which facilitate security, throughput, and agility. It will also cover some of the hot new developments of the Xen Project.
The Future is Fun - Stop Motion, iCreate, Mindstorms, WeDo, & Game Designmkc8b
The document discusses technology programs for youth at several public libraries, focusing on stop-motion animation, iCreate Club, LEGO Mindstorms, and game design. Stop-motion classes allow youth to plan, film, and edit short movies. iCreate Club uses Macs and software like GarageBand and iMovie. LEGO Mindstorms and WeDo introduce programming and engineering concepts using LEGO robotics. Game design programs teach youth to design and build their own video games. The programs aim to support 21st century skills and provide fun experiences for students.
A general futurist look at how linear, exponential and discontinuous growth is shaping the future of technology and what may be expected in key areas such as hardware, software, semiconductors, artificial intelligence, nanotechnology, biotechnology, life extension and virtual worlds.
Audio: http://feeds.feedburner.com/BroaderPerspectivePodcast
This document discusses and envisions various future technologies including helping devices for the visually impaired, eco-friendly ATMs, portable office appliances, smart washing technologies, new kitchen assistants, chewing gum batteries, T-shirts controlled via smartphone, medical technologies, immersed senses that allow free movement for scuba divers, open source car technology, and a future where technology will be accessible through portable devices. The document presents an optimistic view of how technology may enhance and assist people in their daily lives in various areas such as transportation, home appliances, healthcare, and recreation.
This document provides an overview of multimedia and animation presented by Shalini Singh, Shikha Tomar, Shikha Malik, and Ram Dutt Shukla. It defines multimedia as the combination of more than one media for information presentation. The key components of multimedia are described as text, graphics, audio, video, and animation. Examples of multimedia applications include distance learning, video games, advertisements, presentations, and kiosks. Principles of animation like persistence of vision and phi are discussed. The differences between animation and video are also highlighted.
In the next 10 years, communication technology will advance in education and entertainment. Tablets will replace textbooks in K-12 classrooms, and online video lectures will become common in universities. Video games will use biometrics to read emotions and fully immersive sensor technology. Television will become 3D and combine with computers, allowing users to access all computing functions from the living room. New innovations will diffuse through social networks as people seek gratifying new media to satisfy their needs.
This document discusses home automation through an Android mobile device. It describes a system where a Bluetooth module and relays are used to allow an Android phone to remotely control home appliances. The phone acts as the host controller, communicating with client modules attached to devices via Bluetooth. The system allows users to control lights, temperature and other electronics from their mobile device.
This is a presentation on Google App Engine for Java given at Devfest 2009 in Buenos Aires Argentina on Nov 17, 2009 by Google Developer Advocate, Chris Schalk and Google Software Engineer, Ignacio Blanco.
Rapid Application Development on Google App Engine for JavaKunal Dabir
When you need to build and host web application as soon as possible with no cost involved and want no nonsense stuff to come in between, glide can come handy.
This document provides an overview of Gaelyk, a lightweight Groovy toolkit for developing applications on Google App Engine. Gaelyk builds on Groovy's servlet support and provides enhancements to the Google App Engine Java SDK to simplify development. It allows using Groovy scripts called Groovlets instead of raw servlets and Groovy templates instead of JSPs. This provides a clean separation of views and logic for developing web applications on Google App Engine using the Groovy programming language.
This document discusses using various technologies on Google App Engine including JIQL, GaeVFS, RESTlets, scheduled tasks, JRuby on Rails, task queues, XMPP, and Clojure. JIQL emulates a relational database on App Engine's Bigtable datastore. GaeVFS provides a virtual filesystem on Bigtable. RESTlets make RESTful web services easy to implement in Java on App Engine. Scheduled tasks allow for background processing via cron jobs. JRuby on Rails provides a way to run Ruby on Rails applications on App Engine. Task queues allow for asynchronous background processing. XMPP enables instant messaging and peer-to-peer applications. Clojure can also be used
The document discusses various technologies and languages including PHP, Python, Ruby, Go, Scala, and Red. It mentions tools for mobile development like PhoneGap and frameworks like jQuery, Dojo, and Sencha. Other topics covered include Node.js, HTML5, cloud computing platforms, virtualization, and decoupled content management systems. Resources and links are provided for many of the languages and technologies discussed.
Whether you are building a mobile app or a web app, Apache Usergrid (incubating) can provide you with a complete backend that supports authentication, persistence and social features like activities and followers all via a comprehensive REST API — and backed by Cassandra, giving you linear scalability. This session will tell you what you need to know to be a Usergrid contributor, starting with the basics of building and running Usergrid from source code. You’ll learn how to find your way around the Usergrid code base, how the code for the Stack, Portal and SDKs and how to use the test infrastructure to test your changes to Usergrid. You’ll learn the Usergrid contributor workflow, how the project uses JIRA and Github to manage change and how to contribute your changes to the project. The session will also cover the Usergrid roadmap and what the community is currently working on.
This document provides 14 lessons and hacks for building native and mobile web applications using JavaScript. It discusses issues like architecting for multiple platforms and environments, structuring the codebase, detecting the platform, improving performance of animations through CSS transitions, handling garbage collection of images and HTML, supporting touch events, adding sound, and leveraging tools like PhoneGap Build. The tips aim to help developers apply their web skills to build applications that run on both desktop and mobile devices using a single codebase.
The document provides an overview of Google App Engine (GAE) for running Java applications on cloud platforms. It discusses that in GAE, developers do not manage machines directly and instead upload binaries for GAE to run. It describes various services available in GAE like data storage, processing images, and cron jobs. The document also summarizes tools for local development and deployment, limitations of GAE around filesystem and socket access, and advantages like built-in logging and routing by domain headers.
Creating Modular Test-Driven SPAs with Spring and AngularJSGunnar Hillert
Single-page Applications (SPA) are all the rage these days and with them there is an avalanche of new tools, libraries and frameworks we need to know. But what does this mean for us as Spring developers? In this session we will give you an overview of the current landscape and illustrate the choices the Spring XD team has made for its user interface. What do I use to write SPA applications? How do I integrate them into existing Spring-based backends? How do I build them? Can I integrate them into my existing Gradle or Maven build processes in order to achieve complete build automation? How do I integrate realtime messaging using Spring's SockJS/WebSocket support? In this talk we will answer these and many more questions. We will cover frameworks such as AngularJS, Bootstrap, RequireJS; tools like Bower, Grunt, Gulp; and also talk about testing using Karma and Protractor.
Introduction to serverless computing on Google Cloudwesley chun
This is a 15-20 minute tech talk designed for those who wish to get a broad high-level introduction to serverless computing. Tech featured includes Google App Engine, Google Cloud Functions, and Google Apps Script.
Google App Engine (GAE) is a platform that allows developers to build and host web applications in Google's infrastructure. Key points:
- GAE provides scalable hosting for web applications built using Python, Java, and other technologies.
- It offers APIs for common services like data storage (BigTable), user authentication, mail sending, and image processing.
- Applications can scale automatically based on traffic and are subject to resource limits of 500MB of storage and 500 concurrent requests.
This document discusses technologies for creating and maintaining web applications. It covers Ruby and the Rails framework. Ruby is designed to be programmer-focused rather than machine-focused, helping create dynamic and self-explained code. Rails enables quickly building web servers through conventions, reuse, single responsibility principles, and features that provide quick setup, deployment, and built-in scalability. The document also discusses front-end architecture with client-side logic, and Rails features for development, deployment, databases, assets, and multi-environment configuration.
- Play is a popular Java web framework that aims to optimize developer productivity through conventions over configurations and other features.
- It provides stateless MVC architecture, easy reloading of changes without redeploying, and includes testing frameworks.
- Play emphasizes features like asynchronous I/O, CRUD modules, job scheduling, and integration with Heroku, Bootstrap, and Git.
The document discusses Gaelyk, a lightweight Groovy toolkit for developing applications on Google App Engine Java. Gaelyk builds on Groovy's servlet support by allowing developers to write Groovlets instead of raw servlets and use Groovy templates. It provides enhancements to the GAE Java SDK by leveraging Groovy's dynamic nature. The document demonstrates how Gaelyk simplifies common tasks like sending emails, accessing and querying the datastore, and implementing MVC patterns using Groovlets and templates.
JRuby, Ruby, Rails and You on the Cloud is a presentation about using Ruby on Rails with JRuby on cloud platforms. It introduces JRuby and how to set up a development environment. It demonstrates generating a Rails scaffold and accessing Java libraries from Rails. Deployment options on platforms like Engine Yard AppCloud are discussed. The presentation provides an overview of testing and recommends resources for learning more about Ruby, Rails, JRuby and deployment strategies.
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyKyle Drake
This document summarizes Kyle Drake's presentation on using EventMachine (EM) and EM::Synchrony to build fast, concurrent Ruby web applications without blocking I/O or callback hell. Key points include:
- EM implements the reactor pattern to handle blocking I/O without threads by using callbacks and kernel threads.
- EM::Synchrony avoids callback nesting by wrapping callbacks in fibers, allowing synchronous-looking code.
- Sinatra can be made concurrent by running each request in its own EM::Synchrony fiber with little code change.
- Ruby has strong options for building high-performance concurrent apps while maintaining productivity advantages over Node.js.
The MEAN stack allows you to build fast, responsive, and maintainable full-stack websites using JavaScript. The stack uses four innovative frameworks: MongoDB for rapid data access, Express for simplified web development, Angular for componentized and fluid UI, and Node for speed.
Not sure if the MEAN stack is for you? Then come to this free warm-up session. We give you a quick tour of all of the pieces of the stack. How to get you machine ready. And show you what it is like to build a site using it.
This session is for both front and backend developers. We'll show you how JavaScript, the world's most ubiquitous language, can help you to master the web.
This document discusses how the Ruby on Rails ecosystem helps development teams by enabling non-blocking development. It outlines tools that allow developers to work independently in sandboxes, manage code through source control, build and deploy automatically, and track issues. This approach prevents blocking, allows continuous integration, and facilitates coordination between developers and operations through notification systems and issue tracking. The document also presents solutions for monitoring servers and jobs that can help reduce the need for a dedicated system administrator.
The document discusses new features and enhancements in Groovy 2, including modularity improvements, extension modules, Java 7 support like invoke dynamic and binary literals, and static type checking. Modularity changes allow Groovy to be split into a smaller core JAR and optional modules. Extension modules allow contributing new methods. Static type checking adds compile-time checks for errors.
Fort de ses 1.7 millions de téléchargements l'an passé, Groovy continue son bonhomme de chemin en tête parmi les langages de programmation alternatifs pour la JVM.
Groovy 2.0, sorti l'an passé, introduisait dans son offre de la modularité, le support de JDK 7 au niveau syntaxique avec "Project Coin" autant qu'au niveau JVM avec l'utilisation d'"invoke dynamic", et proposait des fonctionnalités de typage et de compilation statique.
Groovy 2.1, quant à lui, s'appuie sur ces bases pour compléter le support d'"invoke dynamic" pour plus de performances. Il propose des améliorations permettant de documenter, d'aider les IDEs, et de vérifier statiquement les Domain-Specific Languages construits avec Groovy. Vous pourrez créer des méta-annotations regroupant d'autres annotations, pour éviter l'annotation "hell". Et enfin, vous irez encore plus loin dans la customisation du compilateur !
Accrochez votre ceinture, paré au décollage !
"Groovy 2.0 and beyond" presentation given at the Groovy/Grails eXchange conference.
Video can be seen here:
http://skillsmatter.com/podcast/groovy-grails/keynote-speech
Groovy 2.0 includes alignments with JDK 7, support for invoke dynamic, continued runtime performance improvements, static type checking, static compilation, and modularity. Some key features include command chains for more readable DSL code, closure enhancements, and bundled support for multicore programming with GPars.
This summary provides an overview of the key points about Groovy 2.0 discussed in the document:
1. Groovy 2.0 features a more modular architecture with smaller JAR files for individual features, as well as the ability to create custom extension modules.
2. It includes support for Java 7 features like binary literals, underscores in literals, and multicatch exceptions.
3. The new static type checking functionality in Groovy 2.0 aims to catch errors like typos, missing methods, and wrong assignments at compile time rather than runtime.
Groovy Domain Specific Languages - SpringOne2GX 2012Guillaume Laforge
Paul King, Andrew Eisenberg and Guillaume Laforge present about implementation of Domain-Specific Languages in Groovy, while at the SpringOne2GX 2012 conference in Washington DC.
The document discusses new features in Groovy 2.0, including alignments with JDK 7 like Project Coin changes and invoke dynamic support, as well as static type checking, compilation, and modularity. It also covers improvements to Groovy 1.8 like command chains which allow dropping dots and parentheses when chaining method calls to write more readable code.
The document summarizes new features and enhancements in Groovy 2.0, including:
1) Command chains allow dropping dots and parentheses when chaining method calls to write more readable business rules.
2) Closure enhancements include annotation parameters, composition, trampolining, and improved memoization.
3) Builtin JSON support allows consuming, producing, and pretty-printing JSON.
Groovy 2.0 introduces several new features including command chains that allow dropping dots and parentheses when chaining method calls to write more readable DSL-style code. Other improvements include performance enhancements, built-in JSON support, and continued work on static type checking and static compilation.
The document discusses new features in Groovy 2.0 including alignments with JDK 7 such as Project Coin language changes and invoke dynamic support. It also discusses continued runtime performance improvements, static type checking, static compilation, and modularity. Additionally, the document provides an overview of improvements and enhancements to command chains, closures, and parallel programming support in Groovy 1.8.
Groovy 2.0 update - Cloud Foundry Open Tour Moscow - Guillaume LaforgeGuillaume Laforge
The document discusses new features in Groovy 1.8 and upcoming changes in Groovy 2.0. Key points include:
- Groovy 1.8 introduced "command chains" allowing method calls to be written without dots or parentheses for improved readability.
- Other Groovy 1.8 features included performance improvements, GPars for concurrency, and built-in JSON support.
- Groovy 2.0 will align more with JDK 7, add static type checking and compilation, and improve modularity.
The document discusses new features in Groovy 1.8 and upcoming features in Groovy 2.0, as presented by Guillaume Laforge, Groovy project manager. It introduces "command chains", which allow dropping dots and parentheses when chaining method calls to write more readable DSLs. It provides examples of command chains for medication instructions and making coffee. Upcoming features discussed for Groovy 2.0 include alignments with JDK 7, continued runtime performance improvements, static type checking, static compilation, and modularity.
Groovy Update, new in 1.8 and beyond - Guillaume Laforge - Devoxx 2011Guillaume Laforge
The document discusses new features in Groovy 1.8 including command chains that allow dropping dots and parentheses when chaining method calls, runtime performance improvements, and bundling of GPars for parallel programming. It also outlines plans for Groovy 2.0 such as alignments with JDK 7 including Project Coin and invokedynamic for continued runtime optimizations and static type checking.
The document discusses new features in Groovy 1.8 and beyond, including command chains expressions that allow dropping dots and parentheses when chaining method calls to write more readable domain-specific languages resembling plain English. It provides examples of medical instructions and coffee preparation written using this new syntax without punctuation. The author also outlines further syntax optimizations and control structures possible with command chains.
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...Guillaume Laforge
The document discusses Domain Specific Languages (DSLs) and their use in Groovy. It provides an introduction to DSLs, their goals, examples of technical and business DSLs, and pros and cons of using DSLs. The document also discusses various Groovy features that are useful for creating DSLs, such as optional typing, native syntax constructs, command chain expressions, and adding properties to numbers. Paul King and Guillaume Laforge are identified as presenters on DSLs in Groovy.
How Can I use the AI Hype in my Business Context?Daniel Lehner
𝙄𝙨 𝘼𝙄 𝙟𝙪𝙨𝙩 𝙝𝙮𝙥𝙚? 𝙊𝙧 𝙞𝙨 𝙞𝙩 𝙩𝙝𝙚 𝙜𝙖𝙢𝙚 𝙘𝙝𝙖𝙣𝙜𝙚𝙧 𝙮𝙤𝙪𝙧 𝙗𝙪𝙨𝙞𝙣𝙚𝙨𝙨 𝙣𝙚𝙚𝙙𝙨?
Everyone’s talking about AI but is anyone really using it to create real value?
Most companies want to leverage AI. Few know 𝗵𝗼𝘄.
✅ What exactly should you ask to find real AI opportunities?
✅ Which AI techniques actually fit your business?
✅ Is your data even ready for AI?
If you’re not sure, you’re not alone. This is a condensed version of the slides I presented at a Linkedin webinar for Tecnovy on 28.04.2025.
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Aqusag Technologies
In late April 2025, a significant portion of Europe, particularly Spain, Portugal, and parts of southern France, experienced widespread, rolling power outages that continue to affect millions of residents, businesses, and infrastructure systems.
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveScyllaDB
Want to learn practical tips for designing systems that can scale efficiently without compromising speed?
Join us for a workshop where we’ll address these challenges head-on and explore how to architect low-latency systems using Rust. During this free interactive workshop oriented for developers, engineers, and architects, we’ll cover how Rust’s unique language features and the Tokio async runtime enable high-performance application development.
As you explore key principles of designing low-latency systems with Rust, you will learn how to:
- Create and compile a real-world app with Rust
- Connect the application to ScyllaDB (NoSQL data store)
- Negotiate tradeoffs related to data modeling and querying
- Manage and monitor the database for consistently low latencies
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...SOFTTECHHUB
I started my online journey with several hosting services before stumbling upon Ai EngineHost. At first, the idea of paying one fee and getting lifetime access seemed too good to pass up. The platform is built on reliable US-based servers, ensuring your projects run at high speeds and remain safe. Let me take you step by step through its benefits and features as I explain why this hosting solution is a perfect fit for digital entrepreneurs.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
Semantic Cultivators : The Critical Future Role to Enable AIartmondano
By 2026, AI agents will consume 10x more enterprise data than humans, but with none of the contextual understanding that prevents catastrophic misinterpretations.
AI and Data Privacy in 2025: Global TrendsInData Labs
In this infographic, we explore how businesses can implement effective governance frameworks to address AI data privacy. Understanding it is crucial for developing effective strategies that ensure compliance, safeguard customer trust, and leverage AI responsibly. Equip yourself with insights that can drive informed decision-making and position your organization for success in the future of data privacy.
This infographic contains:
-AI and data privacy: Key findings
-Statistics on AI data privacy in the today’s world
-Tips on how to overcome data privacy challenges
-Benefits of AI data security investments.
Keep up-to-date on how AI is reshaping privacy standards and what this entails for both individuals and organizations.
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
Dev Dives: Automate and orchestrate your processes with UiPath MaestroUiPathCommunity
This session is designed to equip developers with the skills needed to build mission-critical, end-to-end processes that seamlessly orchestrate agents, people, and robots.
📕 Here's what you can expect:
- Modeling: Build end-to-end processes using BPMN.
- Implementing: Integrate agentic tasks, RPA, APIs, and advanced decisioning into processes.
- Operating: Control process instances with rewind, replay, pause, and stop functions.
- Monitoring: Use dashboards and embedded analytics for real-time insights into process instances.
This webinar is a must-attend for developers looking to enhance their agentic automation skills and orchestrate robust, mission-critical processes.
👨🏫 Speaker:
Andrei Vintila, Principal Product Manager @UiPath
This session streamed live on April 29, 2025, 16:00 CET.
Check out all our upcoming Dev Dives sessions at https://community.uipath.com/dev-dives-automation-developer-2025/.
Mobile App Development Company in Saudi ArabiaSteve Jonas
EmizenTech is a globally recognized software development company, proudly serving businesses since 2013. With over 11+ years of industry experience and a team of 200+ skilled professionals, we have successfully delivered 1200+ projects across various sectors. As a leading Mobile App Development Company In Saudi Arabia we offer end-to-end solutions for iOS, Android, and cross-platform applications. Our apps are known for their user-friendly interfaces, scalability, high performance, and strong security features. We tailor each mobile application to meet the unique needs of different industries, ensuring a seamless user experience. EmizenTech is committed to turning your vision into a powerful digital product that drives growth, innovation, and long-term success in the competitive mobile landscape of Saudi Arabia.
HCL Nomad Web – Best Practices and Managing Multiuser Environmentspanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-and-managing-multiuser-environments/
HCL Nomad Web is heralded as the next generation of the HCL Notes client, offering numerous advantages such as eliminating the need for packaging, distribution, and installation. Nomad Web client upgrades will be installed “automatically” in the background. This significantly reduces the administrative footprint compared to traditional HCL Notes clients. However, troubleshooting issues in Nomad Web present unique challenges compared to the Notes client.
Join Christoph and Marc as they demonstrate how to simplify the troubleshooting process in HCL Nomad Web, ensuring a smoother and more efficient user experience.
In this webinar, we will explore effective strategies for diagnosing and resolving common problems in HCL Nomad Web, including
- Accessing the console
- Locating and interpreting log files
- Accessing the data folder within the browser’s cache (using OPFS)
- Understand the difference between single- and multi-user scenarios
- Utilizing Client Clocking
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxJustin Reock
Building 10x Organizations with Modern Productivity Metrics
10x developers may be a myth, but 10x organizations are very real, as proven by the influential study performed in the 1980s, ‘The Coding War Games.’
Right now, here in early 2025, we seem to be experiencing YAPP (Yet Another Productivity Philosophy), and that philosophy is converging on developer experience. It seems that with every new method we invent for the delivery of products, whether physical or virtual, we reinvent productivity philosophies to go alongside them.
But which of these approaches actually work? DORA? SPACE? DevEx? What should we invest in and create urgency behind today, so that we don’t find ourselves having the same discussion again in a decade?
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxJustin Reock
Google App Engine Java, Groovy and Gaelyk
1. Google App Engine,
Groovy Baby!
by Patrick Chanezon and Guillaume Laforge
from Google and SpringSource
2. Learn about GAE/J and
how Groovy it can be!
Discover the Google App Engine for Java cloud
solution, and how Groovy and Gaelyk can make
you more productive and bring you lots of fun
coding your app in the cloud!
www.devoxx.com
3. Patrick Chanezon
Google Developer Advocate
@chanezon
www.devoxx.com
4. Guillaume Laforge
• Groovy Project Manager
• JSR-241 Spec Lead
• Head of Groovy Development
at SpringSource
• Initiator of the Grails framework
• Co-author of Groovy in Action
• Speaker: JavaOne, QCon, JavaZone, Sun TechDays,
Devoxx, The Spring Experience, SpringOne, JAX,
www.devoxx.com
Dynamic Language World, IJTC, and more...
5. Agenda
• What does it take to host a Java Web application?
• Introducing Google App Engine for Java
• App Engine Review for Java
– A Complete Java development stack
• Demos
• Limitations, Issues
• Roadmap
• Scala, Clojure, JRuby
• Groovy
• Gaelyk
• Questions
3
6. What does it take (for a Java developer) to
host a Web application?
4
8. Hosting with Java still means hidden costs
• Idle capacity
• Software patches & upgrades
• License fees
• IT staff server wrangling
• Traffic & utilization forecasting
• Upgrades
6
9. Google App Engine – now with Java!
And it’s still…
• Easy to build
• Easy to maintain
• Easy to scale
7
10. All the same services for Java App Engine as
with Python
8
11. 18+ months in review
Apr 2008 Python launch
May 2008 Memcache, Images API
Jul 2008 Logs export
Aug 2008 Batch write/delete
Oct 2008 HTTPS support
Dec 2008 Status dashboard, quota details
Feb 2009 Billing, larger files
Apr 2009 Java launch, DB import, cron support,
SDC
May 2009 Key-only queries
Jun 2009 Task queues
Aug 2009 Kindless queries
Sep 2009 XMPP
Oct 2009 Incoming Email
9
26. NeatBeans Plugin for Java App Engine
http://kenai.com/projects/nbappengine/
24
27. Demo
• Lolcat Wave Robot
– From the GWT client
to a Google Wave Bot!
27
28. Demo
• Demonstrating “Plane Crazy”
• Uses DataStore for Airplane, Activities, People data
• Uses email service for correspondence
• Uses XMPP for simple chatbot access
Live Demo: http://plane-crazy.appspot.com
Source: http://code.google.com/p/plane-crazy-demo/
28
29. Limitations, Issues
• No naked domains
• No SSL for domains
• First request for scripted languages is slow
• No MapReduce
• NoSQL
• No Sockets
• No Long running processes
• No Threads
• no javax.image APIs
• No Jax-WS
• Limit # of File on Apps
29
30. Roadmap
• Storing/serving large files
• Mapping operations across data sets
• Datastore cursors
• Notification alerts for application exceptions
• Datastore dump and restore facility
30
31. Tips
• Nick Johnson’s deferred lib article
– http://code.google.com/appengine/articles/deferred.html
– Python but applies to Java
– catch DeadlineExceededError and spawn a new task
31
32. Scala
• Modern language on top of VM (Java & .NET)
– Statically typed
– Traits -> Mixin style composition
– More functional style, but not bigot about it: closures
– Concurrency: Actors
– Type inference: less verbose than Java
– Type System
• Programming Scala, Wample & Payne, O’Reilly
• People to follow: Jonas Boner, @debasishg, Dave Pollack,
Alex Payne
32
33. Scala/Lift
• Scala’s Web Framework
– Seaside's highly granular sessions and security
– Rails fast flash-to-bang
– Django's "more than just CRUD is included"
– Wicket's designer-friendly templating style (see Lift View First)
• Lift in Appengine
– Not all works: no Threads -> No Actors
• David Pollack & al, Lift Getting started
– http://liftweb.net/docs/getting_started/mod_master.html#x1-50001.3
• ymnk’s Books example
– git://gist.github.com/98561.git
33
34. Scala/Lift
Author.scala
package net.liftweb.example.model
import javax.persistence._
import com.google.appengine.api.datastore.Key
@Entity
class Author {
@Id
@GeneratedValue(){val strategy = GenerationType.IDENTITY}
var id : Key = _
@Column{val nullable = false}
var name : String = ""
@OneToMany{val mappedBy = "author", val targetEntity=classOf[Book]}
var books : java.util.List[Book] = _
}
34
35. JRuby
• Ola Bini’s work on JRuby so that it works on appengine
– Many presos and blogs about rails on GAE (IO talk)
– Bumble / Datastore, BeeU / User service
• Ryan Brown appengine-apis gem
– http://code.google.com/p/appengine-jruby/
– Rack::AppEngine task
– See their Railsconf talk
• Rails works
• Sinatra framework
– sudo gem install sinatra
• Sam Ruby Wave Robot in JRuby/Sinatra
– http://intertwingly.net/blog/2009/06/07/Google-Wave-Robot-w-
Sinatra-JRuby-AppEngine
– Wave client lib
35
36. JRuby
• Don’t forget to replace net/http by the Google version
– Based on UrlFetch instead of Sockets
• Curt Thompson of Best Buy’s Giftag.com
– http://googleappengine.blogspot.com/2009/02/best-buys-giftag-
on-app-engine.html
– Real world use case
36
37. Guestbook in JRuby
guestbook.rb
require 'sinatra'
require 'dm-core'
# Configure DataMapper to use the App Engine datastore
DataMapper.setup(:default, "appengine://auto")
# Create your model class
class Shout
include DataMapper::Resource
property :id, Serial
property :message, Text
end
# Make sure our template can use <%=h
helpers do
include Rack::Utils
alias_method :h, :escape_html
end
37
38. Guestbook in JRuby
get '/' do
# Just list all the shouts
@shouts = Shout.all
erb :index
end
post '/' do
# Create a new shout and redirect back to the list.
shout = Shout.create(:message => params[:message])
redirect '/'
end
views/index.erb
<% @shouts.each do |shout| %>
<p>Someone wrote, <q><%=h shout.message %></q></p>
<% end %>
<form method=post>
<textarea name="message"></textarea>
<input type=submit value=Shout>
</form>
38
39. Clojure
• Lisp dialect on top of Java VM
• Programming Clojure, Halloway, PragProg book
• John Hume appengine-clj lib
– git://github.com/duelinmarkers/appengine-clj.git
– users, datastore, test-utils
(require '[appengine-clj.datastore :as ds])
(ds/create {:kind "Person" :name "Jimmmy" :age 25})
=> {:kind "Person" :key #<Key Person(1138)> :name "Jimmmy" :age 25}
• Compojure web framework (inspired by Sinatra)
• git://github.com/weavejester/compojure.git
• http://elhumidor.blogspot.com/2009/04/clojure-on-google-
appengine.html
39
40. Guestbook in Clojure/Compojure
(ns guestbook.servlet
... you no longer need to import UserServiceFactory ...
(:require
[appengine-clj.users :as users]))
(defroutes guestbook-app
(GET "/"
(let [user-info (request :appengine-clj/user-info)
user (user-info :user)]
(html
[:h1 "Hello, " (if user (.getNickname user) "World") "!"]
[:p (link-to (.createLoginURL (user-info :user-service) "/")
"sign in")]
[:p (link-to (.createLogoutURL (user-info :user-service) "/")
"sign out")]))))
(defservice (users/wrap-with-user-info guestbook-app))
40
41. Tools: Emacs
• clojure-mode, slime, swank
• Setup tools:
– http://riddell.us/tutorial/slime_swank/slime_swank.html
• Interactive Programming with Clojure, Compojure, Google
App Engine and Emacs
– http://www.hackers-with-attitude.com/2009/08/intertactive-
programming-with-clojure.html
– Edit, C-c C-c, shift-reload
• Jeff Foster Wave Robot in Clojure
– http://www.fatvat.co.uk/2009/07/google-wave-and-clojure.html
41
47. Gaelyk
Gaelyk is a lightweight Groovy toolkit on top of the
Google App Engine Java SDK
Gaelyk builds on Groovy’s servlet support
Groovlets: Groovy scripts instead of raw servlets!
Groovy templates: JSP-like template engine
Both allow for a clean separation of views and logic
Gaelyk provides several enhancements around the GAE Java
SDK to make life easier, thanks to Groovy’s dynamic nature
www.devoxx.com
48. Why Groovy?
Groovy is a dynamic language for the JVM
very flexible, malleable, expressive and concise syntax
easy to learn for Java developers
deriving from the Java 5 grammar
provides powerful APIs to simplify the life of developers
possibility to dynamically enrich existing APIs
support for Groovlets and its own template engine
We worked with the Google App Engine Java team before
the official launch of the platform, to ensure Groovy would
www.devoxx.com
run well on this new environment
50. First steps...
•Go to http://gaelyk.appspot.com
•Download the template project
•Put your first Groovlet in /WEB-INF/groovy
•And your templates at the root
•And you’re ready to go!
•Launch dev_appserver.sh
•Go to http://localhost:8080/
52. A groovlet
Instead of writing full-blown servlets, just write
Groovy scripts (aka Groovlets)
def numbers = [1, 2, 3, 4]
def now = new Date()
html.html {
body {
numbers.each { number -> p number }
p now
}
}
www.devoxx.com
54. Shortcuts
Variables available Google services
request / response datastore
context / applicaiton memcache
session urlFetch
params mail
header userService
out / sout / html user
Methods available defaultQueue
include / forward queues
www.devoxx.com
print / println xmpp
57. ...compared to Java
Properties props = new Properties();
ops, null);
Ses sion session = Session.getDefaultInstance(pr
String msgBody = "...";
try {
Message msg = new MimeMessage(session);
m", "Admin"));
msg.se tFrom(new InternetAddress("[email protected]
TO,
msg.addRecipient(Message.RecipientType. "Mr. User"));
new InternetAddress("[email protected]",
n activated");
msg .setSubject("Your Example.com account has bee
msg.setText(msgBody);
Transport.send(msg);
} catch (AddressException e) {}
} catch (MessagingException e) {}
www.devoxx.com
58. Accessing the datastore
Direct interaction with the low-level datastore API
ty
import com.google.appengine.api.datastore.Enti
Entity entity = new Entity("person")
map
// subscript notation, like when accessing a
entity['name'] = "Guillaume Laforge"
// normal property access notation
entity.age = 32
entity.save()
entity.delete()
datastore.withTransaction {
www.devoxx.com
// do stuff with your entities
// within the transaction
}
59. Querying to be improved...
import com.google.appengine.api.datastore.*
der.*
import static com.google.appengine.api.datastore.FetchOptions.Buil
// query the scripts stored in the datastore
def query = new Query("savedscript")
// sort results by descending order of the creation date
query.addSort("dateCreated", Query.SortDirection.DESCENDING)
author
// filters the entities so as to return only scripts by a certain
r)
query.addFilter("author", Query.FilterOperator.EQUAL, params.autho
PreparedQuery preparedQuery = datastore.prepare(query)
// return only the first 10 results
def entities = preparedQuery.asList( withLimit(10) )
www.devoxx.com
60. ...into something groovier?
def entities = datastore.createQuery {
select from: savedscript
sort DESC, on: dateCreated
where author == params.author
limit 10
} as List
www.devoxx.com
61. ...into something groovier?
def entities = datastore.createQuery {
select from: savedscript
sort DESC, on: dateCreated
where author == params.author
te d!
limit 10 en
} as List l
p em
t Im
t Ye
N o
www.devoxx.com
62. Task queue API
// access a configured queue using the subscript notation
queues['dailyEmailQueue']
// or using the property access notation
queues.dailyEmailQueue
// you can also access the default queue with:
queues.default
defaultQueue
// add a task to the queue
queue << [
countdownMillis: 1000, url: "/task/dailyEmail",
taskName: "Send daily email newsletter",
method: 'PUT', params: [date: '20090914'],
payload: content
www.devoxx.com
]
63. Jabber / XMPP support (1/3)
Sending instant messages
String recipient = "[email protected]"
// check if the user is online
if (xmpp.getPresence(recipient).isAvailable()) {
// send the message
def status = xmpp.send(to: recipient,
body: "Hello, how are you?")
// checks the message was successfully
// delivered to all the recipients
assert status.isSuccessful()
}
www.devoxx.com
64. Jabber / XMPP support (2/3)
Sending instant messages with an XML payload
String recipient = "[email protected]"
// check if the service is online
if (xmpp.getPresence(recipient).isAvailable()) {
// send the message
def status = xmpp.send(to: recipient, xml: {
customers {
customer(id: 1) {
name 'Google'
}
}
})
// checks the message was successfully delivered to the service
www.devoxx.com
assert status.isSuccessful()
}
65. Jabber / XMPP support (2/3)
Sending instant messages with an XML payload
String recipient = "[email protected]"
// check if the service is online
if (xmpp.getPresence(recipient).isAvailable()) {
// send the message
def status = xmpp.send(to: recipient, xml: {
customers {
customer(id: 1) { <customers>
name 'Google' <customer id=’1’>
} <name>Google</name>
} </customer>
}) </customers>
// checks the message was successfully delivered to the service
www.devoxx.com
assert status.isSuccessful()
}
66. Jabber / XMPP support (3/3)
Receving incoming instant messages
Configure the XmppServlet in web.xml
Add the inbound message service in appengine-web.xml
// get the body of the message
message.body
// get the sender Jabber ID
message.from
// get the list of recipients Jabber IDs
message.recipients
// if the message is an XML document instead of a raw string
message
if (message.isXml()) {
// get the raw XML
www.devoxx.com
message.stanza
// get a document parsed with XmlSlurper
message.xml
}
67. Memcache service
Map notation access to the cache
}
class Country implements Serialzable { String name
def countryFr = new Country(name: 'France')
in the cache
// use the subscript notation to put a country object
// (you can also use non-string keys)
memcache['FR'] = countryFr
// check that a key is present in the cache
if ('FR' in memcache) {
the cache using a key
// use the subscript notation to get an entry from
def countryFromCache = memcache['FR']
}
www.devoxx.com
68. What’s coming next?
A new Gaelyk 0.3 release a couple days ago
Sugar for the Memcache service
The incoming email support in GAE SDK 1.2.6
Add more sugar around...
The Datastore query system
SQL-like DSL, dynamic finders...
DSL for the URL Fetch service for accessing REST resources
More generally...
Anything that’ll come up in upcoming GAE SDK versions
www.devoxx.com
70. The use case
Collaboratively consolidated Twitter search
Send a search query to
[email protected]
The bot will
receive your message
store the query in the datastore
enqueue a task for processing the search
The queue handler will
parse the Twitter search feed for the query
put the results into memcache
www.devoxx.com
Browse http://groovydemos.appspot.com
82. spo t.com
p
mos @ap
e
gro ovyd
pot.com
yde mos.apps
://groov
www.devoxx.com
http
83. Summary
Easy access to a cloud solution
Deploying Java apps, as easily as you would with PHP
Familiar to Java folks
Your good old Servlet centric webapps style
Pretty cheap
You need a high-trafficed website to reach the quotas
Gaelyk provides a simplified approach to creating Servlet
centric webapps in a productive manner
Leveraging Groovy’s servlet / template support and dynamic capabilities
www.devoxx.com
84. Thanks for your attention!
e nezon cy Manager
aforg pment a
ume L Develo ck Ch Advoca
Guilla Groovy Patri Cloud m
ad of gmail.c
om &
Client anezon@go ogle.co
He e@
glaforg rge
Email: @glafo E mail: ch chanezon
@
Twitter
:
T witter :
References:
• http://code.google.com/appengine/
• http://gaelyk.appspot.com/
www.devoxx.com
• http://groovy.codehaus.org/
• http://grails.org/
85. Images used in this presentation
Clouds
http://www.morguefile.com/archive/display/627059
http://www.morguefile.com/archive/display/625552
http://www.morguefile.com/archive/display/629785
Duke ok GAE
http://code.google.com/images/duke-on-gae.jpg
http://weblogs.java.net/blog/felipegaucho/archive/ae_gwt_java.png
Python logo : http://python.org/images/python-logo.gif
Gaelyc cross with clouds : http://www.morguefile.com/archive/display/37889
Speed limit : http://www.morguefile.com/archive/display/18492
Warehouse : http://www.morguefile.com/archive/display/85628
Snow foot steps : http://www.flickr.com/photos/robinvanmourik/2875929243/
Sugar : http://www.flickr.com/photos/ayelie/441101223/sizes/l/
www.devoxx.com
Editor's Notes
#10: - Scalable web hosting platform
- Built on Google technology
- Utilizing the same infrastructure you already use each day
* Return web search result < 0.25s