google app engineとその影響(補足)

Download Google App Engineとその影響(補足)

If you can't read please download the document

Upload: -

Post on 16-Apr-2017

5.303 views

Category:

Documents


5 download

TRANSCRIPT

Google App Engine

2009/11/13

Java

ex:id

ex:2ch

WEB+DB PRESS

Google App EngineAmazon EC2

Amazon EC2

Google App Engine

Google App Engine

key-value-store

ProtocolBuffersProtocol Buffers Google

RDBRDB:

GAE:

Google App Engine

JDOAPI

JDO

GAE

API(low level API)

GAE

JDO

PersistenceManagerFacoryGoogle

public final class PMF { private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional");

private PMF() {}

public static PersistenceManagerFactory get() { return pmfInstance; }}

@PersistenceCapable(identityType = IdentityType.APPLICATION)public class Member { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Key id;

@Persistent // @javax.jdo.annotations.Unique unique private String screenName;

@Persistent private String name;

makePersistent

// PersistenceManager pm = PMF.get().getPersistenceManager(); Member m = new Member(screenName, name); try{ pm.makePersistent(m); }finally{ pm.close(); }

PersistenceManager pm = PMF.get().getPersistenceManager();try{ Query q = pm.newQuery(Member.class); q.setUnique(true); q.setFilter("screenName == pScreenName"); q.declareParameters("String pScreenName"); Member m = (Member)q.execute(screenName); if(m != null){ message = m.getName() + ""; }else{ message = screenName + ""; }}finally{ pm.close();}

Low Level API

Java Mail

API

/_ah/mail/

HTML


http://d.hatena.ne.jp/nowokay/20091024

Commons FileUpload

DBBlob

Image img = ImagesServiceFactory.makeImage(uploadBlob.getBytes());Transform tr = ImagesServiceFactory.makeResize(48, 48);ImagesService ims = ImagesServiceFactory.getImagesService();Image smallImg = ims.applyTransform(tr, img, ImagesService.OutputEncoding.PNG);blob = new Blob(smallImg.getImageData());

TaskQueue

30

queue

URLCRON

Queue queue = QueueFactory.getDefaultQueue(); queue.add(TaskOptions.Builder.url("/queue/tweet") .param("tweet", t.getId().toString()) .countdownMillis(0));

memcache

JCacheLow Level API

JCache

Cache ch; try { CacheManager cm = CacheManager.getInstance(); CacheFactory cf = cm.getCacheFactory(); Map conf = Maps.newHashMap(); ch = cf.createCache(conf); } catch (CacheException ex) { throw new ServletException(ex); } String contents; if(ch.containsKey(USERLIST)){ contents = (String) ch.get(USERLIST) + "
read"; }else{ String contents = ch.put(USERLIST, contents); }

GoogleUser

UserService us = UserServiceFactory.getUserService(); if(request.getUserPrincipal() == null){ String url = us.createLoginURL("/loggedin.jsp"); out.printf("", url); }else{ User u = us.getCurrentUser(); out.printf("%s
", u.getNickname()); }

Jetty

TomcatServletResponseWrapper
http://d.hatena.ne.jp/nowokay/20091027

GAE

Java

PHPAzure

Python

RubyJRubyCPU

JRubyGAE

Java

HTML5

DB

JavaScript

GUI

Java

JavaScript

JavaJavaScriptGWT

PythonJavaScriptPyjamas

PHPJavaScriptPHP GWT

Android

iPhone

HTML5

Java

JavaScript

Android

Python

Webrequestresponse

RDBMS

key-value-store