<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>润物无声 &#187; Heroku</title>
	<atom:link href="http://blog.zhourunsheng.com/tag/heroku/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zhourunsheng.com</link>
	<description>天空一朵雨做的云</description>
	<lastBuildDate>Sat, 08 May 2021 05:17:21 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Heroku 上的 Scala 程序设计</title>
		<link>http://blog.zhourunsheng.com/2011/10/heroku-%e4%b8%8a%e7%9a%84-scala-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/</link>
		<comments>http://blog.zhourunsheng.com/2011/10/heroku-%e4%b8%8a%e7%9a%84-scala-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 12:29:46 +0000</pubDate>
		<dc:creator><![CDATA[润物无声]]></dc:creator>
				<category><![CDATA[程序设计]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://blog.zhourunsheng.com/?p=1022</guid>
		<description><![CDATA[<p>最近 Heroku 官方博客发布声明已经支持Scala语言《Scala now runs on Heroku》 [&#8230;]</p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/10/heroku-%e4%b8%8a%e7%9a%84-scala-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Scala 程序设计</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p>最近 Heroku 官方博客发布声明已经支持Scala语言《<a href="http://blog.heroku.com/archives/2011/10/3/scala/" target="_blank">Scala now runs on Heroku</a>》，本文就带领大家熟悉一下Scala App的开发流程。</p>
<p>目前有两种开发部署方式可供选择，一种类似《<a title="Heroku 上的 Java 程序设计" href="http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Java 程序设计</a>》，采用Maven管理，另一种是利用 <a href="https://github.com/harrah/xsbt" target="_blank">sbt</a> (the Scala Build Tool) 去开发部署，本文以第二种方式来进行介绍。关于Heroku的详细介绍和本地的开发环境安装，请参照博文《<a title="Heroku 上的 Java 程序设计" href="http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Java 程序设计</a>》，本文只对不同的地方做具体说明。</p>
<p><strong>Heroku = Polyglot + Platform as a Service (PaaS) + Cloud Components</strong></p>
<p><span id="more-1022"></span></p>
<h3>开发步骤</h3>
<ol>
<li>安装 Scala 开发工具 <a href="https://github.com/harrah/xsbt/wiki/Setup" target="_blank">sbt</a>（win7的环境我已经写好了配置文件，直接下载到工程目录中即可<a href="http://blog.zhourunsheng.com/wp-content/uploads/2011/10/win7_sdt.zip">win7_sdt</a>）</li>
<li>登录 Heroku :
<pre>heroku auth:login</pre>
</li>
<li>创建一个新工程目录，例如careyscala，目录中新建文件 <em>careyscala/build.sbt，</em> 内容如下:
<pre>scalaVersion := "2.9.1"

{
  val stage = TaskKey[Unit]("stage", "Prepares the project to be run, in environments that deploy source trees rather than packages.")
  stage in Compile := {}
}</pre>
<p>为Heroku添加一个新的 “stage” task.</li>
<li>建立编译配置文件 <em>careyscala/project/build.properties</em> ，用来指明sdt的版本，具体内容如下:
<pre>sbt.version=0.11.0</pre>
</li>
<li>建立 Scala app 源代码文件 <em>src/main/scala/Hello.scala</em> ，具体内容如下:
<pre>object Hello extends App {
  println("hello, Carey")
}</pre>
</li>
<li>本地运行测试 app :
<pre>sbt run</pre>
<p>程序输出，第一次运行比较慢，要耐心等待...需要从网上下载依赖包:</p>
<pre>[info] Set current project to default-bb7250 (in build file:/E:/Program%20Files/
Heroku/work/careyscala/)
[info] Updating {file:/E:/Program%20Files/Heroku/work/careyscala/}default-bb7250
...
[info] Done updating.
[info] Compiling 1 Scala source to E:Program FilesHerokuworkcareyscalatarge
tscala-2.9.1classes...
[info] Running Hello
hello, Carey
[success] Total time: 6 s, completed 2011-10-4 19:55:56</pre>
</li>
<li>建立git配置文件 <em>.gitignore</em> ，具体内容如下:
<pre>target
project/boot
project/target</pre>
</li>
<li>建立 git repo, 添加文件并commit:
<pre>git init
git add build.sbt project/build.properties src
git commit -m init</pre>
</li>
<li>在 Heroku 服务端新建一个App:
<pre>heroku create -s cedar</pre>
</li>
<li>上传 Scala app 到 Heroku 服务器:
<pre>git push heroku master</pre>
</li>
<li> Heroku服务器端运行APP:
<pre>heroku run "sbt run"</pre>
<p>哈哈，是不是看到期待的结果了</li>
</ol>
<p>一切都是如此简单，通过这个Demo，相信大家已经熟悉了在Heroku上面开发和部署Scala App的基本流程了，接下来发挥你的创造力吧，如果有什么建议或问题的话，请联系我，<a href="http://devcenter.heroku.com/articles/scaling-out-with-scala-and-akka" target="_blank">官方开发论坛</a>里面包含了好多宝贝，自己发掘吧！</p>
<h3>参考文献</h3>
<p><a title="Permalink to Getting Started with Scala on Heroku" href="http://www.jamesward.com/2011/09/07/getting-started-with-scala-on-heroku" rel="bookmark">Getting Started with Scala on Heroku</a></p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/10/heroku-%e4%b8%8a%e7%9a%84-scala-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Scala 程序设计</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zhourunsheng.com/2011/10/heroku-%e4%b8%8a%e7%9a%84-scala-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heroku平台的FaceBook APP开发</title>
		<link>http://blog.zhourunsheng.com/2011/09/heroku%e5%b9%b3%e5%8f%b0%e7%9a%84facebook-app%e5%bc%80%e5%8f%91/</link>
		<comments>http://blog.zhourunsheng.com/2011/09/heroku%e5%b9%b3%e5%8f%b0%e7%9a%84facebook-app%e5%bc%80%e5%8f%91/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 05:17:21 +0000</pubDate>
		<dc:creator><![CDATA[润物无声]]></dc:creator>
				<category><![CDATA[Web设计]]></category>
		<category><![CDATA[FaceBook]]></category>
		<category><![CDATA[Heroku]]></category>

		<guid isPermaLink="false">http://blog.zhourunsheng.com/?p=948</guid>
		<description><![CDATA[<p>Facebook 官方博客发表声明开始支持APP自动化部署到Heroku平台，这倒是一个好消息，APP的开发者 [&#8230;]</p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/09/heroku%e5%b9%b3%e5%8f%b0%e7%9a%84facebook-app%e5%bc%80%e5%8f%91/">Heroku平台的FaceBook APP开发</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="http://developers.facebook.com/blog/">Facebook 官方博客</a>发表声明开始支持APP自动化部署到<a href="http://www.heroku.com/">Heroku</a>平台，这倒是一个好消息，APP的开发者再也不用担心平台的部署问题了，更何况Heroku这后起之秀的优秀云平台提供者，PHP，Ruby，Node.js等等几乎现在流行的开发语言都支持，所以方便多了。详情见<a href="http://developers.facebook.com/blog/post/558/">Facebook and Heroku: an even easier way to get started</a>。本文就介绍一下具体的开发和部署方法。<span id="more-948"></span></p>
<h3>部署</h3>
<ol>
<li>访问FaceBook <a href="https://developers.facebook.com/apps">Dev App</a>开发中心，创建一个新的APP（ <strong>Create New App</strong>），输入APP的基本信息，包括APP Name 和 APP Namespace<br />
<img class="alignnone size-medium wp-image-958" title="create_new_app" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/create_new_app1-300x113.png" alt="" width="300" height="113" /></li>
<li>APP 建立以后，进入到APP的配置界面，在这里选择云平台部署，选择 <strong>Cloud Services -&gt; <strong>Get Started<img class="alignnone size-medium wp-image-960" title="careyblog_app_setting" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/careyblog_app_setting-300x216.png" alt="" width="300" height="216" /></strong></strong></li>
<li>在云平台中选择Heroku，目前只有该平台，所以直接选择即可<br />
<img class="alignnone size-medium wp-image-961" title="clound_service_heroku" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/clound_service_heroku-300x99.png" alt="" width="300" height="99" /></li>
<li>接下来开始配置Heroku的开发环境，选择一个目前最流行的Node.js，然后APP开始自动配置<br />
<img class="alignnone size-medium wp-image-963" title="clound_service_heroku_select_nodejs" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/clound_service_heroku_select_nodejs-300x144.png" alt="" width="300" height="144" /></li>
<li>然后APP会请求账户的权限，允许即可，页面会跳转到部署好的页面上面，比如我建立的CareyBlog已经部署到了<a href="https://afternoon-frost-4168.herokuapp.com">https://afternoon-frost-4168.herokuapp.com/</a>，现在可以直接访问了，程序已经实现了一部分功能了，如抓取好友列表，最近照片等等<br />
<img class="alignnone size-medium wp-image-965" title="careyblog_request_permission" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/careyblog_request_permission-300x216.png" alt="" width="300" height="216" /><a href="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/careyblog_app_page1.png"><img class="alignnone size-medium wp-image-967" title="careyblog_app_page" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/careyblog_app_page1-300x209.png" alt="" width="300" height="209" /></a></li>
<li>至此为止，前期工作都已OK，APP的框架已经搭建，并且部署完毕，后续就是丰富APP的内容，进一步开发了</li>
</ol>
<h3>开发</h3>
<ol>
<li>到创建APP时填写的邮箱中收取Heroku的部署信息</li>
<li>登录Heroku获取代码
<pre>heroku login
git clone git@heroku.com:afternoon-frost-4168.git -o heroku</pre>
<p><img class="alignnone size-medium wp-image-971" title="facebook_app_code" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/facebook_app_code-300x104.png" alt="" width="300" height="104" /></li>
<li>修改代码并更新
<pre>git commit -am "changed greeting"
git push heroku</pre>
</li>
</ol>
<h3>总结</h3>
<p>一切操作都在云端解决了，只剩下好的创意来开发APP了！</p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/09/heroku%e5%b9%b3%e5%8f%b0%e7%9a%84facebook-app%e5%bc%80%e5%8f%91/">Heroku平台的FaceBook APP开发</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zhourunsheng.com/2011/09/heroku%e5%b9%b3%e5%8f%b0%e7%9a%84facebook-app%e5%bc%80%e5%8f%91/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Heroku 上的 Play Framework（Java）</title>
		<link>http://blog.zhourunsheng.com/2011/09/heroku-%e4%b8%8a%e7%9a%84-play-framework%ef%bc%88java%ef%bc%89/</link>
		<comments>http://blog.zhourunsheng.com/2011/09/heroku-%e4%b8%8a%e7%9a%84-play-framework%ef%bc%88java%ef%bc%89/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 03:06:06 +0000</pubDate>
		<dc:creator><![CDATA[润物无声]]></dc:creator>
				<category><![CDATA[云计算]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.zhourunsheng.com/?p=706</guid>
		<description><![CDATA[<p>上周Heroku开始支持Java程序设计，具体的请参见我的上一篇博文《Heroku 上的 Java 程序设计》 [&#8230;]</p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/09/heroku-%e4%b8%8a%e7%9a%84-play-framework%ef%bc%88java%ef%bc%89/">Heroku 上的 Play Framework（Java）</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></description>
				<content:encoded><![CDATA[<p>上周Heroku开始支持Java程序设计，具体的请参见我的上一篇博文《<a title="Heroku 上的 Java 程序设计" href="http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Java 程序设计</a>》，本周Heroku开始支持Play框架，本文就带领大家熟悉一下基于play框架的程序开发流程。</p>
<h3>Play是什么</h3>
<p>Play是 <a href="http://www.infoq.com/news/2011/07/play-composition">一个Java Web框架</a> 。针对Web开发，Play采用了“净室”方法，不会强加约束，例如：</p>
<blockquote><p>兼容Servlet容器、支持JSP、兼容标准Java Web App布局、顺应Java和OO原则。</p></blockquote>
<p>Play遵循Ruby on Rails的“Built-and-Deploy”模型，而不是更传统的“Package-and-Distribute”模型。</p>
<blockquote><p>不需要公式化的类或XML配置文件。框架采用了全新的打包惯例，在适当的地方使用了静态代码。举例来说，控制器入口点是无状态的，它面向HTTP而非面向对象，因此可以用静态方法来实现。</p></blockquote>
<p>Play基于无容器的PaaS模型。Play应用可以运行于本地，也可以无缝地部署到生产环境。这样一来就可以简化部署工作流，消除由环境差异导致的问题。<br />
从架构角度来看，Play使用了<a href="http://www.jboss.org/netty">Netty</a>，这是一个由<a href="http://www.jboss.org/about.html">JBoss团队</a>构建的非阻塞I/O协议库，它使用基于Continuation的编程模型，可以支持请求的异步处理。Play还实现了<a href="http://www.infoq.com/presentations/Horizontal-Scalability">Share-Nothing</a>模型，可以很方便地通过添加节点对应于程序进行水平扩展，有状态会话是无法做到这点的。<span id="more-706"></span></p>
<h3>怎样使用Play</h3>
<ol>
<li>安装 heroku 客户端开发环境，参见  <a href="http://toolbelt.herokuapp.com/linux/readme">Linux</a>, <a href="http://toolbelt.herokuapp.com/osx/download">Mac</a>,  <a href="http://toolbelt.herokuapp.com/windows/download">Windows</a>.</li>
<li>安装 <a href="http://git-scm.com/">git</a>  客户端软件和配置 ssh key，参见 <a href="http://help.github.com/mac-key-setup/">Mac</a>，<a href="http://help.github.com/msysgit-key-setup/">Windows</a> 和 <a href="http://help.github.com/linux-key-setup/">Linux</a></li>
<li>安装 <a href="http://www.playframework.org/download">Play! version 1.2.3</a></li>
<li>登录 Heroku :
<pre>heroku auth:login</pre>
</li>
<li>创建一个 Play! app:
<pre>play new play_hello_carey
cd play_hello_carey</pre>
<p><img class="alignnone size-medium wp-image-708" title="new_play_hello_carey" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/new_play_hello_carey-300x173.png" alt="" width="300" height="173" /></li>
<li>本地运行 app :
<pre>play run --%production</pre>
<p><img class="alignnone size-medium wp-image-712" title="play_run_production" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/play_run_production-300x173.png" alt="" width="300" height="173" /></li>
<li>建立 git repo:
<pre>git init
git add app conf lib public test
git commit -m init</pre>
</li>
<li>在 Heroku 上建立一个新的 app :
<pre>heroku create -s cedar</pre>
<p><img class="alignnone size-medium wp-image-713" title="create_new_app" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/create_new_app-300x42.png" alt="" width="300" height="42" /></li>
<li>上传 play_hello_carey app 到 Heroku:
<pre>git push heroku master</pre>
</li>
<li>运行 app，浏览器中访问app网址 :
<pre>heroku open</pre>
<p><img class="alignnone size-medium wp-image-714" title="run_app" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/09/run_app-300x194.png" alt="" width="300" height="194" /></li>
</ol>
<p>通过这个流程，相信大家可以知道怎样在Heroku上面部署安装基于Play框架的Java程序了。</p>
<h4>参考文献</h4>
<ul>
<li><a href="http://www.jamesward.com/2011/08/29/getting-started-with-play-framework-on-heroku">getting-started-with-play-framework-on-heroku</a></li>
<li><a href="http://www.infoq.com/cn/news/2011/09/play-heroku">play-heroku</a></li>
</ul>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/09/heroku-%e4%b8%8a%e7%9a%84-play-framework%ef%bc%88java%ef%bc%89/">Heroku 上的 Play Framework（Java）</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zhourunsheng.com/2011/09/heroku-%e4%b8%8a%e7%9a%84-play-framework%ef%bc%88java%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heroku 上的 Java 程序设计</title>
		<link>http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/</link>
		<comments>http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 02:07:57 +0000</pubDate>
		<dc:creator><![CDATA[润物无声]]></dc:creator>
				<category><![CDATA[云计算]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.zhourunsheng.com/?p=698</guid>
		<description><![CDATA[<p>Heroku简介 Heroku is a Polyglot Cloud Application Platfor [&#8230;]</p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Java 程序设计</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></description>
				<content:encoded><![CDATA[<h3>Heroku简介</h3>
<p>Heroku is a <a href="http://blog.heroku.com/archives/2011/8/3/polyglot_platform/">Polyglot Cloud Application Platform</a>. Heroku provides us a way to run Ruby, Node.js, Clojure, and Java applications on a managed, scalable, and multi-tenant system. Heroku also provides <a href="http://addons.heroku.com/">numerous add-ons</a> that help us make the <a href="http://www.jamesward.com/2011/07/12/architectural-evolution-from-middleware-to-the-cloud">shift from monolithic middleware to Cloud Components</a>. Another way to say it is:</p>
<blockquote><p>Heroku = Polyglot + Platform as a Service (PaaS) + Cloud Components</p></blockquote>
<p>Heroku是一个支持<a href="http://blog.heroku.com/archives/2011/8/3/polyglot_platform/">多语言的云应用平台</a>。 它为我们提供了一个支撑的环境来运行Ruby，Node.js，Clojure，和Java应用程序，并且是可扩展，多租户的系统。 Heroku还提供了众多的<a href="http://addons.heroku.com/">组件</a>，帮助我们从<a href="http://www.jamesward.com/2011/07/12/architectural-evolution-from-middleware-to-the-cloud">单片中间件转移到云组件</a>。另一种说法是：</p>
<blockquote><p>Heroku = 多语种 + 平台作为服务（PaaS）+ 云组件</p></blockquote>
<p><span id="more-698"></span></p>
<h3>Heroku 上运行Java程序</h3>
<p>Heroku can run any Java app that runs in OpenJDK 6. Today Heroku uses Maven to create a “<a href="http://devcenter.heroku.com/articles/slug-compiler">slug</a>” for Java apps. That slug can then be loaded onto one or more “<a href="http://devcenter.heroku.com/articles/dynos">dynos</a>“. You can tell a dyno to execute / start a Java app from the command line and you can also use a “<a href="http://devcenter.heroku.com/articles/procfile">Procfile</a>” to provide a command that will auto-start for each instance of a specific dyno type. Web dynos are able to listen on a port and will receive HTTP traffic through a load balancer that is automatically setup for each app. With that background knowledge, lets dive into code!</p>
<p>Heroku 的Java运行时环境为OpenJDK 6，通过用Maven来编译程序，然后将程序上传到云端，用命令行方式来启动执行Java应用程序，云端会根据HTTP流量自动调节负载平衡，并启动一个运行实例。</p>
<p>具体步骤如下：</p>
<ol>
<li>安装 heroku 客户端软件，参见  <a href="http://toolbelt.herokuapp.com/linux/readme">Linux</a>，<a href="http://toolbelt.herokuapp.com/osx/download">Mac</a> 和  <a href="http://toolbelt.herokuapp.com/windows/download">Windows</a></li>
<li>安装 <a href="http://git-scm.com/">git</a>  客户端软件和配置 ssh key，参见 <a href="http://help.github.com/mac-key-setup/">Mac</a>，<a href="http://help.github.com/msysgit-key-setup/">Windows</a> 和 <a href="http://help.github.com/linux-key-setup/">Linux</a></li>
<li>安装 <a href="http://maven.apache.org/">Maven</a></li>
<li>从命令行登入 Heroku :
<div>
<div>
<pre>heroku auth:login
依次输入Email和Password，如果是第一次登录的话会要求上传SSH key文件，选择yes就行，然后heroku会将这些信息保存在本地，以后登录就不需要再次输入了。</pre>
</div>
</div>
</li>
<li>建立一个新的工程目录:
<div>
<div>
<pre>mkdir herokuhellojava
cd herokuhellojava</pre>
</div>
</div>
</li>
<li>新建 Maven 配置文件 <code>pom.xml</code>:
<div>
<div>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    &lt;groupId&gt;foo&lt;/groupId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
    &lt;name&gt;herokuhellojava&lt;/name&gt;
    &lt;artifactId&gt;herokuhellojava&lt;/artifactId&gt;
&lt;/project&gt;</pre>
</div>
</div>
</li>
<li>建立Java source 目录:
<div>
<div>
<pre>mkdir -p src/main/java</pre>
</div>
</div>
</li>
<li>在 <code>src/main/java</code> 目录中新建立一个Java 源文件 <code>Hello.java</code> :
<div>
<div>
<pre>public class Hello
{
  public static void main(String[] args)
  {
    System.out.println("hello, Carey");
  }
}</pre>
</div>
</div>
</li>
<li>编译工程项目:
<div>
<div>
<pre>mvn compile</pre>
</div>
</div>
</li>
<li>本地运行Java程序:
<div>
<div>
<pre>java -cp target/classes Hello
程序输出 hello, Carey</pre>
</div>
</div>
</li>
<li>建立git本地repo，然后将 <code>pom.xml</code> 和 <code>src</code> 文件夹加入进去:
<div>
<div>
<pre>git init
git add pom.xml src
git commit -m init</pre>
</div>
</div>
</li>
<li>利用cedar栈在Heroku上建立一个新的APP:
<div>
<div>
<pre>heroku create -s cedar
程序输出新建立的APP的信息，比如 stark-lightning-113</pre>
</div>
</div>
</li>
<li>把本地的java程序上传到Heroku:
<div>
<div>
<pre>git push heroku master</pre>
</div>
</div>
<p>Heroku 会自动建立一个 与此APP对应的 slug .</li>
<li>在 Heroku上远程运行java程序:
<div>
<div>
<pre>heroku run "java -cp target/classes Hello"</pre>
</div>
</div>
<p>Heroku 会新建立一个 dyno 环境，装载此APP的 slug，然后运行该APP</p>
<p><img title="herokuhellojava" src="http://blog.zhourunsheng.com/wp-content/uploads/2011/08/herokuhellojava-300x173.jpg" alt="" width="300" height="173" /></li>
</ol>
<p>到目前为止，你已经开始在云端运行Java程序了，虽然只是个简单的Demo程序，但是至少知道了整个部署和执行的过程，接下来要学习的东西还有很多很多。</p>
<h3>下一步工作</h3>
<ul>
<li>阅读书籍 <a href="http://github.com/heroku/java-workbook">Heroku for Java Workbook</a></li>
<li>阅读文章 <a href="http://devcenter.heroku.com/articles/java">Heroku Dev Center</a></li>
<li>问题讨论 <a href="http://stackoverflow.com/">StackOverflow</a></li>
</ul>
<h3>参考文献</h3>
<p><a href="http://www.jamesward.com/2011/08/25/heroku-adds-java-support">heroku-adds-java-support</a></p>
<p><a rel="nofollow" href="http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/">Heroku 上的 Java 程序设计</a>，首发于<a rel="nofollow" href="http://blog.zhourunsheng.com">润物无声</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zhourunsheng.com/2011/08/heroku-%e4%b8%8a%e7%9a%84-java-%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
