SlideShare a Scribd company logo
Google App Engine: Java Runtime Michael  "Van"  Riper Silicon Valley Code Camp October 3, 2009 Kritter a  twitter  bot written in  Java and deployed on  App Engine
Google App Engine: Java Runtime Kritter Demo Follow @KrillionKritter Two minutes later, check messages d krillionkritter u 883974183913 94041 One minute later, check messages
Google App Engine: Java Runtime Caveats I am a neophyte Eclipse user =) No Google Web Toolkit coverage Dependency on Twitter service
Google App Engine: Java Runtime Getting Started App Engine Docs code.google.com/appengine/ Kritter Source Code code.google.com/p/kritter/ Twitter4J Project j.mp/twitter4j

Recommended for you

Twitter APIs - the starter guide
Twitter APIs - the starter guideTwitter APIs - the starter guide
Twitter APIs - the starter guide

The document discusses Twitter's data APIs, including the Streaming API which provides a 1% sample of all tweets or tracks keywords in real-time, and the REST API which accesses past tweet data. It recommends creating a Twitter app, using optimized calls to the REST API to avoid errors, and leveraging open source libraries rather than re-inventing the wheel.

twitterreststreaming
Postman API Development Platform
Postman API Development PlatformPostman API Development Platform
Postman API Development Platform

POSTMAN | Postman allows you to design, develop, test and monitor APIs. This talk will provide an overview of the interfaces, runtime and variables.

Understanding Meteor Stack
Understanding Meteor StackUnderstanding Meteor Stack
Understanding Meteor Stack

The document discusses the key components that make up the Meteor stack, including Blaze, Tracker, DDP, and Mongo. It notes that while Meteor uses these components by default, the framework is customizable - developers can replace the UI library, database, and DDP client/server with alternatives. The standard Meteor application architecture is then outlined, explaining how each component fits together and interacts to provide reactivity on the client.

javascriptmeteorweb development
Google App Engine: Java Runtime WEB-INF Configuration appengine.xml logging.properties web.xml queue.xml cron.xml
Google App Engine: Java Runtime META-INF Configuration jdoconfig.xml Kritter Server Configuration kritter.properties
Google App Engine: Java Runtime FollowerServlet Test manually first Automate with cron job later on Uses Datastore to save cron state Uses “followers” Task Queue
Google App Engine: Java Runtime FollowerWorkerServlet Handles “followers” Task Queue Saves new “friends” in Datastore

Recommended for you

Orchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStackOrchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStack

Saltstack is by it's design a event driven configuration management tool. In talk will do a deep dive into salt reactor, runners and beacon systems. Talk will also cover a demo of event driven application releases process.

saltstackorchestrationevent driven
Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017

Spinnaker is an open source tool for deploying software releases to multiple cloud providers. Winnaker is a tool built by Target that helps automate common tasks when using Spinnaker like starting pipelines, getting stage details, integrating with chat tools, and troubleshooting errors. It removes company-specific code so others can contribute. Winnaker is distributed as a Docker container and makes it easy to pressure test Spinnaker and cloud environments by running multiple pipelines.

winnakertargetselenium
Quickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud ServicesQuickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud Services

SpringOne Platform 2017 Prasad Bopardikar, Pivotal; Colin Stevenson, Pivotal "We all know Cloud Foundry is a great platform for cloud-native applications. However, what happens when you’re building an app that leverages services from public cloud providers such as Microsoft, Google and Amazon? Service brokers make it easy to spin up service instances and bind to apps. What about the actual code itself? Developers leverage the popular Spring Boot framework to quickly build Java apps to deploy to Cloud Foundry. The Spring Boot Starters and Auto-Configuration eliminate the need to write boilerplate code to consume some services, but not all. We’ve decided to give you a head start. This session is about extending the Spring framework. We’ll use examples from our recent work with Microsoft Azure, Google Cloud Platform and Amazon AWS services. As more services become available, developers will want to consume these on Cloud Foundry. Extend Spring to make it easier for developers to consume those backing services!"

springone platformspringone platform 2017
Google App Engine: Java Runtime MessageServlet Test manually first Automate with cron job later on Uses Datastore to save cron state Uses “messages” Task Queue
Google App Engine: Java Runtime MessageWorkerServlet Handles “messages” Task Queue Saves new “replies” in Datastore
Google App Engine: Java Runtime Datastore: Why I Chose JDO Better documented: Using JDO with App Engine Nice default JDO Support in Eclipse Datastore: PMF PersistenceManager Singleton
Google App Engine: Java Runtime Datastore: FollowerStat Used by FollowerServlet Stores new follower history Datastore: MessageStat Used by MessageServlet Stores new message history

Recommended for you

Integration solution with daxtra resume indexing
Integration solution with daxtra resume indexingIntegration solution with daxtra resume indexing
Integration solution with daxtra resume indexing

This document outlines Daxtra's resume search integration solution. It involves using a candidate feed agent that loads resumes into an AWS SQS queue from various data sources. A resume reader then processes messages from the queue by looking up resumes, adding candidate profiles to Daxtra, and logging the results. A candidate search agent allows for searching candidates and returning results via API calls to Daxtra services.

Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...

This document provides links to resources for developing and deploying Spring Boot applications on Azure. It includes links to tutorials on deploying a first Spring Boot app, a workshop on Azure Spring Cloud, demo videos of Azure Spring Cloud, information on using Spring with Azure services, tutorials for building Java apps on Azure, best practices for deploying Spring Boot apps, and a sample app using Spring Security and Azure Active Directory.

reactivesecurity
Rapid Development with Azure Spring Cloud
Rapid Development with Azure Spring CloudRapid Development with Azure Spring Cloud
Rapid Development with Azure Spring Cloud

SpringOne 2021 Session Title: Rapid Development with Azure Spring Cloud Speakers: Josh Long, Spring Developer Advocate at VMware; Julien Dubois, Java Developer Advocacy Manager at Microsoft; Layla Porter, Developer Advocate, .NET communities at VMware

core framework.netserverless/microservices
Google App Engine: Java Runtime Datastore: Friend Used by FollowerWorkerServlet Stores friends and their preferences Datastore: Reply Used by MessageWorkerServlet Stores messages and replies
Google App Engine: Java Runtime Deploy & Monitor Local vs Remote Deployment appengine.google.com Versions Logs Cron Jobs Task Queue Data Viewer Quota Details
Google App Engine: Java Runtime Kritter: Unfinished Business Securing URLs for Cron Jobs Add GWT sample code Add proper command parser Documentation
Google App Engine: Java Runtime Additional Resources Building Scalable, Complex Apps Rick Hightower on developerWorks Gaelyk, a Groovy Toolkit Scala on Google App Engine

Recommended for you

Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"

So here we have our brand new app, but how about its deployment, autoscale, high availability and so on? We're gonna take a journey from source code posted to GitHub to deployment in Google Cloud Platform which will be capable to take bazillion of requests. Will make our own docker image and see how it is looks like in practice. Will start our first kubernetes cluster and deploy our app. Will have a sneak peak into autoscaler and high availability

fwdaysdotnetdotnetfwdays
GAE_20100112
GAE_20100112GAE_20100112
GAE_20100112

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.

gae
Big Data Analytics Preview
Big Data Analytics PreviewBig Data Analytics Preview
Big Data Analytics Preview

The document describes two types of high storage data warehouse nodes - Extra Large (XL) and Eight Extra Large (8XL). The XL node has 2 virtual cores, 15GB memory, 3 HDDs with 2TB storage, and moderate network and disk I/O. The larger 8XL node has 16 virtual cores, 120GB memory, 24 HDDs with 16TB storage, 10GbE networking and very high disk I/O. Both nodes are designed for high storage workloads in a data warehouse environment.

bensullins.compluralsighttableau
Google App Engine: Java Runtime That's All Folks Questions?

More Related Content

What's hot

Preparing for CDN failure: Why and how
Preparing for CDN failure: Why and howPreparing for CDN failure: Why and how
Preparing for CDN failure: Why and how
Aaron Peters
 
Kruize
KruizeKruize
Kruize
MamathaBusi
 
Leveragong splunk for finding needle in the Haystack
Leveragong splunk for finding needle in the HaystackLeveragong splunk for finding needle in the Haystack
Leveragong splunk for finding needle in the Haystack
n|u - The Open Security Community
 
Twitter APIs - the starter guide
Twitter APIs - the starter guideTwitter APIs - the starter guide
Twitter APIs - the starter guide
Andy Piper
 
Postman API Development Platform
Postman API Development PlatformPostman API Development Platform
Postman API Development Platform
Postman
 
Understanding Meteor Stack
Understanding Meteor StackUnderstanding Meteor Stack
Understanding Meteor Stack
Wey-Han Liaw
 
Orchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStackOrchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStack
Love Nyberg
 
Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017
Medya Ghazizadeh
 
Quickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud ServicesQuickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud Services
VMware Tanzu
 
Integration solution with daxtra resume indexing
Integration solution with daxtra resume indexingIntegration solution with daxtra resume indexing
Integration solution with daxtra resume indexing
Andy Yang
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
VMware Tanzu
 
Rapid Development with Azure Spring Cloud
Rapid Development with Azure Spring CloudRapid Development with Azure Spring Cloud
Rapid Development with Azure Spring Cloud
VMware Tanzu
 
Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"
Fwdays
 

What's hot (13)

Preparing for CDN failure: Why and how
Preparing for CDN failure: Why and howPreparing for CDN failure: Why and how
Preparing for CDN failure: Why and how
 
Kruize
KruizeKruize
Kruize
 
Leveragong splunk for finding needle in the Haystack
Leveragong splunk for finding needle in the HaystackLeveragong splunk for finding needle in the Haystack
Leveragong splunk for finding needle in the Haystack
 
Twitter APIs - the starter guide
Twitter APIs - the starter guideTwitter APIs - the starter guide
Twitter APIs - the starter guide
 
Postman API Development Platform
Postman API Development PlatformPostman API Development Platform
Postman API Development Platform
 
Understanding Meteor Stack
Understanding Meteor StackUnderstanding Meteor Stack
Understanding Meteor Stack
 
Orchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStackOrchestrate Event-Driven Infrastructure with SaltStack
Orchestrate Event-Driven Infrastructure with SaltStack
 
Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017Win Spinnaker with Winnaker - Open Source North Conf 2017
Win Spinnaker with Winnaker - Open Source North Conf 2017
 
Quickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud ServicesQuickly Build Spring Boot Applications to Consume Public Cloud Services
Quickly Build Spring Boot Applications to Consume Public Cloud Services
 
Integration solution with daxtra resume indexing
Integration solution with daxtra resume indexingIntegration solution with daxtra resume indexing
Integration solution with daxtra resume indexing
 
Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...Enable Authentication and Authorization with Azure Active Directory and Sprin...
Enable Authentication and Authorization with Azure Active Directory and Sprin...
 
Rapid Development with Azure Spring Cloud
Rapid Development with Azure Spring CloudRapid Development with Azure Spring Cloud
Rapid Development with Azure Spring Cloud
 
Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"Alexandr Marchenko "Kubernetes - easy peasy"
Alexandr Marchenko "Kubernetes - easy peasy"
 

Viewers also liked

GAE_20100112
GAE_20100112GAE_20100112
GAE_20100112
Kosuke Matsuda
 
Big Data Analytics Preview
Big Data Analytics PreviewBig Data Analytics Preview
Big Data Analytics Preview
Ben Sullins
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
Tikal Knowledge
 
Get up and running with google app engine in 60 minutes or less
Get up and running with google app engine in 60 minutes or lessGet up and running with google app engine in 60 minutes or less
Get up and running with google app engine in 60 minutes or less
zrok
 
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
Naga Rohit
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
dion
 

Viewers also liked (6)

GAE_20100112
GAE_20100112GAE_20100112
GAE_20100112
 
Big Data Analytics Preview
Big Data Analytics PreviewBig Data Analytics Preview
Big Data Analytics Preview
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Get up and running with google app engine in 60 minutes or less
Get up and running with google app engine in 60 minutes or lessGet up and running with google app engine in 60 minutes or less
Get up and running with google app engine in 60 minutes or less
 
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
Internet Security - Naga Rohit S [ IIT Guwahati ] - Coding Club & DefCon DC91...
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 

Similar to SVCC Google App Engine: Java Runtime

Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
Tahir Akram
 
Hands on App Engine
Hands on App EngineHands on App Engine
Hands on App Engine
Simon Su
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
Lars Vogel
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
Chris Schalk
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
Matthew McCullough
 
File Repository on GAE
File Repository on GAEFile Repository on GAE
File Repository on GAE
lynneblue
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
Lars Vogel
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
Lou Sacco
 
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at RuntimeOSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
NETWAYS
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
Anil Saldanha
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
IndicThreads
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
Inphina Technologies
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
Craeg Strong
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
Craeg Strong
 
Android app performance
Android app performanceAndroid app performance
Android app performance
Saksham Keshri
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
Francesco Marchitelli
 
YouTube APIs Workshop
YouTube APIs WorkshopYouTube APIs Workshop
YouTube APIs Workshop
Jarek Wilkiewicz
 
Remote Config REST API and Versioning
Remote Config REST API and VersioningRemote Config REST API and Versioning
Remote Config REST API and Versioning
Jumpei Matsuda
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
Craeg Strong
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 

Similar to SVCC Google App Engine: Java Runtime (20)

Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 
Hands on App Engine
Hands on App EngineHands on App Engine
Hands on App Engine
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
 
File Repository on GAE
File Repository on GAEFile Repository on GAE
File Repository on GAE
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
 
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at RuntimeOSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
OSMC 2021 | inspectIT Ocelot: Dynamic OpenTelemetry Instrumentation at Runtime
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
Android app performance
Android app performanceAndroid app performance
Android app performance
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
 
YouTube APIs Workshop
YouTube APIs WorkshopYouTube APIs Workshop
YouTube APIs Workshop
 
Remote Config REST API and Versioning
Remote Config REST API and VersioningRemote Config REST API and Versioning
Remote Config REST API and Versioning
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 

Recently uploaded

Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
BookNet Canada
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Mydbops
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 

Recently uploaded (20)

Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsScaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - Mydbops
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 

SVCC Google App Engine: Java Runtime

  • 1. Google App Engine: Java Runtime Michael "Van" Riper Silicon Valley Code Camp October 3, 2009 Kritter a twitter bot written in Java and deployed on App Engine
  • 2. Google App Engine: Java Runtime Kritter Demo Follow @KrillionKritter Two minutes later, check messages d krillionkritter u 883974183913 94041 One minute later, check messages
  • 3. Google App Engine: Java Runtime Caveats I am a neophyte Eclipse user =) No Google Web Toolkit coverage Dependency on Twitter service
  • 4. Google App Engine: Java Runtime Getting Started App Engine Docs code.google.com/appengine/ Kritter Source Code code.google.com/p/kritter/ Twitter4J Project j.mp/twitter4j
  • 5. Google App Engine: Java Runtime WEB-INF Configuration appengine.xml logging.properties web.xml queue.xml cron.xml
  • 6. Google App Engine: Java Runtime META-INF Configuration jdoconfig.xml Kritter Server Configuration kritter.properties
  • 7. Google App Engine: Java Runtime FollowerServlet Test manually first Automate with cron job later on Uses Datastore to save cron state Uses “followers” Task Queue
  • 8. Google App Engine: Java Runtime FollowerWorkerServlet Handles “followers” Task Queue Saves new “friends” in Datastore
  • 9. Google App Engine: Java Runtime MessageServlet Test manually first Automate with cron job later on Uses Datastore to save cron state Uses “messages” Task Queue
  • 10. Google App Engine: Java Runtime MessageWorkerServlet Handles “messages” Task Queue Saves new “replies” in Datastore
  • 11. Google App Engine: Java Runtime Datastore: Why I Chose JDO Better documented: Using JDO with App Engine Nice default JDO Support in Eclipse Datastore: PMF PersistenceManager Singleton
  • 12. Google App Engine: Java Runtime Datastore: FollowerStat Used by FollowerServlet Stores new follower history Datastore: MessageStat Used by MessageServlet Stores new message history
  • 13. Google App Engine: Java Runtime Datastore: Friend Used by FollowerWorkerServlet Stores friends and their preferences Datastore: Reply Used by MessageWorkerServlet Stores messages and replies
  • 14. Google App Engine: Java Runtime Deploy & Monitor Local vs Remote Deployment appengine.google.com Versions Logs Cron Jobs Task Queue Data Viewer Quota Details
  • 15. Google App Engine: Java Runtime Kritter: Unfinished Business Securing URLs for Cron Jobs Add GWT sample code Add proper command parser Documentation
  • 16. Google App Engine: Java Runtime Additional Resources Building Scalable, Complex Apps Rick Hightower on developerWorks Gaelyk, a Groovy Toolkit Scala on Google App Engine
  • 17. Google App Engine: Java Runtime That's All Folks Questions?

Editor's Notes

  1. How many people are familiar with twitter? Explain concepts: followers, friends, tweets, and direct messages. Kritter makes all your followers friends automatically. It responds to certain commands sent from friends as direct messages and sends back responses to friends also as direct messages.
  2. Can I have a volunteer? Anyone on twitter right now? If not, MrVanShizzle will have to fill in. =) Note: the long term vision is third party applications generating the KrillionKritter commands on behalf of users. For now, this is an easy way to test the functionality.
  3. This has been quite the learning opportunity for me as a long time IntelliJ IDEA user. If the plugin for IDEA had not displayed passwords in the clear, I would have probably gone that route instead for this presentation. I highly recommend Fred Sauer's Sunday 9:15am GWT Session for those interested in GWT.
  4. Due to sessions being shortened from 75 to 60 minutes, we won't be able to take time now to get folks setup. Sorry! Java getting started docs are excellent and work well for the Eclipse development approach. Twitter4J has worked flawlessly. Even using the HttpClient class from this project for my Krillion web service calls.
  5. Mention logging setup in appengine.xml. Good idea to set INFO as default logging level for new projects. Nothing special in web.xml. Define my own custom task queues. Cron can be shut off by deploying an empty <cronentries/> element.
  6. In my Eclipse setup, jdoconfig.xml was generated for me with reasonable defaults right out of the box. kritter.properties is where you configure the bot to work with the twitter account of your choosing. Checked in values are placeholders that you must change to some valid twitter account credentials.
  7. Say more about datastore later. Focus on the task queue usage in this servlet: 1. Get named queue from factory 2. Add url to the queue 3. Uses builder pattern for adding parameters to the url. Note: Output a plain text response in parallel to logged information. This was really helpful during initial manual testing phase.
  8. Each worker request provides new follower's ID as request parameter. Use this to verify existing friendship and establish new friendships as necessary. Send twitter direct message welcoming new friends. Persist new friend records in our datastore. You need to be careful with task handlers. If they fail, the task queue management logic will keep retrying them. They can also run more than once. Can you say ... Idempotence? =)
  9. Say more about datastore later. Focus on the task queue usage in this servlet: 1. Get named queue from factory 2. Add url to the queue 3. Uses builder pattern for adding parameters to the url. Note: Output a plain text response in parallel to logged information. This was really helpful during initial manual testing phase.
  10. Each worker request provides message text and the sender as request parameters. Any messages that match our command syntax are handled. Note: We update Friend record early on and add new Reply record at the end. Important to do single close of the PersistenceManager at the very end.
  11. If you go the JDO route, the google documentation on JDO linked to here is a must read. Very well documented. In fact, my implementation of PMF is a copy/paste from the google documentation. This is highly recommended due to overhead associated with PersistenceManager initialization. My datastore may not be very complicated, but, I was extremely happy with how easy persistence was to implement for this application.
  12. By retrieving latest FollowerStat in cron job processing, I can efficiently process only the new followers during each scheduled execution of the /followers job. By retrieving latest MessageStat in cron job processing, I can efficiently process only the new messages during each scheduled execution of the /messages job.
  13. Friend entities are pretty straighforward. It will get more interesting when I add support to store multiple products or multiple zip code preferences per Friend. Reply entities capture the incoming command and the generated answer. Storing the parsed UPC code and Zip code as separate fields for possible future use. For example, looking up in the Reply table all the unique UPC codes searched for in a particular Zip code area.
  14. Demonstrate how simple deployment is from within Eclipse IDE. I confess. I did most of my debugging with the logs and plain text responses during the initial manual testing. In theory, you deploy locally to debug. Get to know the App Engine web dashboard for your application. Deployed version management, log viewing, cron job status, viewing your datastore data, and quota stats are all there. It may not be sexy, but, there is a lot of useful functionality in it.
  15. The kritter cron jobs spawn idempotent tasks, but, it is still a good idea to secure the URLs involved. This is something I will be adding soon I would like to add a dashboard to the webapp that uses Ajax to show a live stream of new followers and new replies. This is a perfect task for introducing GWT to this project. My current RegEx approach will not scale. Kritter code sorely needs to be properly documented. My bad.
  16. First resource, is a Google I/O video that comes highly recommended. I'm a big fan of Rich Hightower's stuff. This is a three part tutorial that looks promising. Gaelyk looked interesting to me. At this point, there is also a Grails App Engine plugin. Of course, we can't leave Scala/Lift out of the equation either. =)
  17. If you are still hungry for more, you can attend Jason Cooper's App Engine 101 session on Sunday at 1:00pm.