Heroku简介
Heroku is a Polyglot Cloud Application Platform. 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 numerous add-ons that help us make the shift from monolithic middleware to Cloud Components. Another way to say it is:
Heroku = Polyglot + Platform as a Service (PaaS) + Cloud Components
Heroku是一个支持多语言的云应用平台。 它为我们提供了一个支撑的环境来运行Ruby,Node.js,Clojure,和Java应用程序,并且是可扩展,多租户的系统。 Heroku还提供了众多的组件,帮助我们从单片中间件转移到云组件。另一种说法是:
Heroku = 多语种 + 平台作为服务(PaaS)+ 云组件
Heroku 上运行Java程序
Heroku can run any Java app that runs in OpenJDK 6. Today Heroku uses Maven to create a “slug” for Java apps. That slug can then be loaded onto one or more “dynos“. You can tell a dyno to execute / start a Java app from the command line and you can also use a “Procfile” 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!
Heroku 的Java运行时环境为OpenJDK 6,通过用Maven来编译程序,然后将程序上传到云端,用命令行方式来启动执行Java应用程序,云端会根据HTTP流量自动调节负载平衡,并启动一个运行实例。
具体步骤如下:
- 安装 heroku 客户端软件,参见 Linux,Mac 和 Windows
- 安装 git 客户端软件和配置 ssh key,参见 Mac,Windows 和 Linux
- 安装 Maven
- 从命令行登入 Heroku :
heroku auth:login 依次输入Email和Password,如果是第一次登录的话会要求上传SSH key文件,选择yes就行,然后heroku会将这些信息保存在本地,以后登录就不需要再次输入了。
- 建立一个新的工程目录:
mkdir herokuhellojava cd herokuhellojava
- 新建 Maven 配置文件
pom.xml
:1 2 3 4 5 6 7 8
<?xml version="1.0" encoding="UTF-8"?> <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"> <modelVersion>4.0.0</modelVersion> <groupId>foo</groupId> <version>1.0-SNAPSHOT</version> <name>herokuhellojava</name> <artifactId>herokuhellojava</artifactId> </project>
<?xml version="1.0" encoding="UTF-8"?> <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"> <modelVersion>4.0.0</modelVersion> <groupId>foo</groupId> <version>1.0-SNAPSHOT</version> <name>herokuhellojava</name> <artifactId>herokuhellojava</artifactId> </project>
- 建立Java source 目录:
mkdir -p src/main/java
- 在
src/main/java
目录中新建立一个Java 源文件Hello.java
:1 2 3 4 5 6 7
public class Hello { public static void main(String[] args) { System.out.println("hello, Carey"); } }
public class Hello { public static void main(String[] args) { System.out.println("hello, Carey"); } }
- 编译工程项目:
mvn compile
- 本地运行Java程序:
java -cp target/classes Hello 程序输出 hello, Carey
- 建立git本地repo,然后将
pom.xml
和src
文件夹加入进去:git init git add pom.xml src git commit -m init
- 利用cedar栈在Heroku上建立一个新的APP:
heroku create -s cedar 程序输出新建立的APP的信息,比如 stark-lightning-113
- 把本地的java程序上传到Heroku:
git push heroku master
Heroku 会自动建立一个 与此APP对应的 slug .
- 在 Heroku上远程运行java程序:
heroku run "java -cp target/classes Hello"
Heroku 会新建立一个 dyno 环境,装载此APP的 slug,然后运行该APP
到目前为止,你已经开始在云端运行Java程序了,虽然只是个简单的Demo程序,但是至少知道了整个部署和执行的过程,接下来要学习的东西还有很多很多。
下一步工作
- 阅读书籍 Heroku for Java Workbook
- 阅读文章 Heroku Dev Center
- 问题讨论 StackOverflow