{"id":90,"date":"2010-12-05T21:26:01","date_gmt":"2010-12-05T19:26:01","guid":{"rendered":"http:\/\/www.bittner.fr\/blogs\/pierre\/?p=90"},"modified":"2010-12-05T21:26:01","modified_gmt":"2010-12-05T19:26:01","slug":"server-side-framework-choice-part-1","status":"publish","type":"post","link":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/","title":{"rendered":"Server side \/ Framework choice (part 1)"},"content":{"rendered":"<p>Comme vu dans le post pr\u00e9c\u00e9dent, le choix cot\u00e9 serveur s&rsquo;est fait sur java avec comme contrainte un h\u00e9bergement \u00ab\u00a0In the Cloud\u00a0\u00bb.<\/p>\n<p>Je dis contrainte car pour plein de bonnes raison, <a href=\"http:\/\/code.google.com\/intl\/fr\/appengine\/\">Google App Engine<\/a> limite ce qu&rsquo;on peut faire dans l&rsquo;application. Amazon Web Services semble plus ouvert puisqu&rsquo;il nous donne acc\u00e8s \u00e0 une machine compl\u00e8te (<a href=\"http:\/\/cloud-computing.learningtree.com\/2010\/08\/25\/comparing-paas-and-iaas\/\">IaaS vs Paas<\/a>). Par contre leur solution me semble un peu plus heavy weigh et le cout d&rsquo;entr\u00e9e un peu plus \u00e9lev\u00e9. Je me donne comme premi\u00e8re contrainte le fait de pouvoir switcher ma plateforme. Cela me semble difficile a premi\u00e8re vue car les 2 plateformes offrent beaucoup de solution \u00ab\u00a0cl\u00e9 en main\u00a0\u00bb apportant de grande valeur ajout\u00e9 (<a href=\"http:\/\/aws.amazon.com\/simpledb\/\">SimpleDB <\/a>et <a href=\"http:\/\/aws.amazon.com\/ec2\/\">EC2 <\/a>pour <a href=\"http:\/\/aws.amazon.com\/\">Amazon Web Services<\/a>, Syst\u00e8me de stockage sp\u00e9cifique &#8211; BigTable &#8211; pour Google).<\/p>\n<p>De fa\u00e7on plus ou moins arbitraire, je choisi AppEngine de Google. Cela me semble un peu plus rapide de d\u00e9velopper quelque chose sur cette plateforme, il y a une une int\u00e9gration avec les comptes google et peut \u00eatre des API pour les autres applications google (calendar, docs) qui pourrait m&rsquo;int\u00e9resser.<\/p>\n<p>Pour le d\u00e9veloppement maintenant que le choix, et donc de ses contraintes, est fait, que prendre? N&rsquo;oublions pas la cible: les smartphones en plus des navigateurs classiques. A ce moment, je ne sais pas exactement quel est le standard de communication entre un smartphone et une application cloud ? REST? SOAP ? JSON ? HTTP? Atom?<\/p>\n<p>Bon je fais un petit tour des centres de d\u00e9veloppement de chaque plateforme:<\/p>\n<ul>\n<li><a href=\"http:\/\/developer.apple.com\/devcenter\/ios\/index.action\">iOS Dev Center<\/a> Le site d&rsquo;Apple est plut\u00f4t pas mal mais rien \u00e0 part faire quelques articles sur les requ\u00eates HTTP ou cr\u00e9er sa socket..<\/li>\n<li><a href=\"http:\/\/developer.android.com\/index.html\">Android Developers<\/a><\/li>\n<li><a href=\"http:\/\/create.msdn.com\/en-US\/\">Create MSDN<\/a> pour WP7<\/li>\n<\/ul>\n<p>Je me dis que je prends le probl\u00e8me un peu \u00e0 l&rsquo;envers. Quel est le standard actuel pour les applications web (google calendar, twitter, facebook, foursquare, live.com) et forc\u00e9ment je verrais quelle API cibl\u00e9e (cot\u00e9 serveur ou client)<\/p>\n<p>Site API<\/p>\n<ul>\n<li><a href=\"http:\/\/code.google.com\/intl\/fr\/apis\/calendar\/\">Google API<\/a> : Mainly HTTP + Atom ou JSON<\/li>\n<li><a href=\"http:\/\/code.google.com\/intl\/fr\/apis\/calendar\/\">Twitter<\/a>; REST<\/li>\n<li><a href=\"http:\/\/developers.facebook.com\/\">Facebook<\/a>: Graph API \/ JSON<\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/windowslive\/default.aspx\">Live.com<\/a>: REST<\/li>\n<li><a href=\"http:\/\/groups.google.com\/group\/foursquare-api\/web\/api-documentation\">Foursquare.com <\/a>(JSON, XML, HTTP)<a href=\"http:\/\/groups.google.com\/group\/foursquare-api\/web\/api-documentation\"><br \/>\n<\/a><\/li>\n<\/ul>\n<p>Phone API<\/p>\n<ul>\n<li><a href=\"http:\/\/lukencode.com\/2010\/08\/04\/rest-web-services-in-windows-phone-7\/\">REST Web Services In Windows Phone 7<\/a> (lukencode.com)<\/li>\n<li><a href=\"http:\/\/www.nickharris.net\/2010\/08\/windows-phone-7-odata-ctp-nope-use-rest-and-json\/\">Windows Phone 7 OData CTP, nope use REST and JSON<\/a> (nickharris.net)<\/li>\n<li><a href=\"http:\/\/lukencode.com\/2010\/04\/27\/calling-web-services-in-android-using-httpclient\/\">Calling Web Services in Android<\/a> (lukencode.com)<\/li>\n<\/ul>\n<p>Framework<\/p>\n<ul>\n<li><a href=\"http:\/\/www.springsource.org\/spring-android\">Spring Android <\/a>(springsource.com)<\/li>\n<li><a href=\"http:\/\/www.springsource.org\/spring-mobile\">Spring Mobile<\/a> (springsource.com)<\/li>\n<li><a href=\"http:\/\/blog.springsource.com\/2010\/11\/19\/spring-into-mobile-application-development\/\">Spring into mobile Application development <\/a>(springsource.com)<\/li>\n<li><a href=\"http:\/\/blog.springsource.com\/2009\/03\/27\/rest-in-spring-3-resttemplate\/\">REST in Spring 3<\/a> (springsource.com)<\/li>\n<li><a href=\"http:\/\/blog.springsource.com\/2009\/03\/08\/rest-in-spring-3-mvc\/\">REST in Spring 3 MVC<\/a> (springsource.com)<\/li>\n<li><a href=\"http:\/\/www.springsource.org\/spring-social\">Spring Social<\/a> With Spring Social you can create applications that interact with  various social networking sites such as Twitter, Facebook.<\/li>\n<li><a href=\"http:\/\/gaelyk.appspot.com\/\">Gaelyk<\/a><\/li>\n<li><a href=\"http:\/\/blog.springsource.com\/2009\/04\/07\/write-your-google-app-engine-applications-in-groovy\/\">Write your Google App Engine applications in Groovy<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Comme vu dans le post pr\u00e9c\u00e9dent, le choix cot\u00e9 serveur s&rsquo;est fait sur java avec comme contrainte un h\u00e9bergement \u00ab\u00a0In the Cloud\u00a0\u00bb. Je dis contrainte car pour plein de bonnes raison, Google App Engine limite ce qu&rsquo;on peut faire dans l&rsquo;application. Amazon Web Services semble plus ouvert puisqu&rsquo;il nous donne acc\u00e8s \u00e0 une machine compl\u00e8te [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Server side \/ Framework choice (part 1) - Pierre&#039;s weblog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Server side \/ Framework choice (part 1) - Pierre&#039;s weblog\" \/>\n<meta property=\"og:description\" content=\"Comme vu dans le post pr\u00e9c\u00e9dent, le choix cot\u00e9 serveur s&rsquo;est fait sur java avec comme contrainte un h\u00e9bergement \u00ab\u00a0In the Cloud\u00a0\u00bb. Je dis contrainte car pour plein de bonnes raison, Google App Engine limite ce qu&rsquo;on peut faire dans l&rsquo;application. Amazon Web Services semble plus ouvert puisqu&rsquo;il nous donne acc\u00e8s \u00e0 une machine compl\u00e8te [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Pierre&#039;s weblog\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-05T19:26:01+00:00\" \/>\n<meta name=\"author\" content=\"Pierre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pierre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\"},\"author\":{\"name\":\"Pierre\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225\"},\"headline\":\"Server side \/ Framework choice (part 1)\",\"datePublished\":\"2010-12-05T19:26:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\"},\"wordCount\":454,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225\"},\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\",\"url\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\",\"name\":\"Server side \/ Framework choice (part 1) - Pierre&#039;s weblog\",\"isPartOf\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#website\"},\"datePublished\":\"2010-12-05T19:26:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Server side \/ Framework choice (part 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#website\",\"url\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/\",\"name\":\"Pierre's weblog\",\"description\":\"Release 2.3\",\"publisher\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225\",\"name\":\"Pierre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-content\/uploads\/2025\/09\/Pierre-Bittner.png\",\"contentUrl\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-content\/uploads\/2025\/09\/Pierre-Bittner.png\",\"width\":1920,\"height\":1080,\"caption\":\"Pierre\"},\"logo\":{\"@id\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.bittner.fr\/blogs\/pierre\",\"https:\/\/www.linkedin.com\/in\/pierre-bittner\/\",\"https:\/\/www.youtube.com\/@pierrebittner\"],\"url\":\"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Server side \/ Framework choice (part 1) - Pierre&#039;s weblog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/","og_locale":"fr_FR","og_type":"article","og_title":"Server side \/ Framework choice (part 1) - Pierre&#039;s weblog","og_description":"Comme vu dans le post pr\u00e9c\u00e9dent, le choix cot\u00e9 serveur s&rsquo;est fait sur java avec comme contrainte un h\u00e9bergement \u00ab\u00a0In the Cloud\u00a0\u00bb. Je dis contrainte car pour plein de bonnes raison, Google App Engine limite ce qu&rsquo;on peut faire dans l&rsquo;application. Amazon Web Services semble plus ouvert puisqu&rsquo;il nous donne acc\u00e8s \u00e0 une machine compl\u00e8te [&hellip;]","og_url":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/","og_site_name":"Pierre&#039;s weblog","article_published_time":"2010-12-05T19:26:01+00:00","author":"Pierre","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Pierre","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#article","isPartOf":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/"},"author":{"name":"Pierre","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225"},"headline":"Server side \/ Framework choice (part 1)","datePublished":"2010-12-05T19:26:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/"},"wordCount":454,"commentCount":0,"publisher":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225"},"articleSection":["Uncategorized"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/","url":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/","name":"Server side \/ Framework choice (part 1) - Pierre&#039;s weblog","isPartOf":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#website"},"datePublished":"2010-12-05T19:26:01+00:00","breadcrumb":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/2010\/12\/05\/server-side-framework-choice-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.bittner.fr\/blogs\/pierre\/"},{"@type":"ListItem","position":2,"name":"Server side \/ Framework choice (part 1)"}]},{"@type":"WebSite","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#website","url":"https:\/\/www.bittner.fr\/blogs\/pierre\/","name":"Pierre's weblog","description":"Release 2.3","publisher":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bittner.fr\/blogs\/pierre\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/3ab57f92769bc1c95b4f56d526b0b225","name":"Pierre","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/image\/","url":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-content\/uploads\/2025\/09\/Pierre-Bittner.png","contentUrl":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-content\/uploads\/2025\/09\/Pierre-Bittner.png","width":1920,"height":1080,"caption":"Pierre"},"logo":{"@id":"https:\/\/www.bittner.fr\/blogs\/pierre\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.bittner.fr\/blogs\/pierre","https:\/\/www.linkedin.com\/in\/pierre-bittner\/","https:\/\/www.youtube.com\/@pierrebittner"],"url":"https:\/\/www.bittner.fr\/blogs\/pierre\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":13,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":114,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/posts\/90\/revisions\/114"}],"wp:attachment":[{"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bittner.fr\/blogs\/pierre\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}