GAE/Kotlin을 시작한다!
11602 단어 GoogleCloudPlatformGAEKotlin
Kotlin은 JVM에서 실행되는 프로그래밍 언어입니다.
이마도키의 문법과 타입 세이프한 형 시스템으로 작게 안전하게 쓸 수 있는 언어입니다.
그리고 Google App Engine은 Google.com과 동일한 인프라에서 애플리케이션을 실행할 수 있는 Google PaaS에서 지원되는 언어는 Python/Java/PHP/Go입니다.
어떤 사이즈의 어플리케이션도 처음부터 스케일을 의식해 써야 해서 조금 잡기 어렵습니다만 요즘은 일본어의 문서도 늘어나고 있으므로 초보자도 취급할 수 있게 되어 오는 것은 아닐까 생각 합니다.
특히 요금도 무료 테두리가 있으므로 사용하지 않으면 돈이 들지 않습니다.
갑자기 대량의 액세스가 있어도 스케일이 용이하기 때문에 개인 개발이나 스타트 업에는 추천의 플랫폼이라고 할 수 있다고 생각합니다.
환경
MacOSX
Google Cloud SDK 1.9.28
Kotlin 1.0.0-beta-2423
프로젝트 만들기
디렉토리를 만들고 gradle init
로 프로젝트 만들기
build.gradle
를 편집합니다.
build.gradlebuildscript {
ext.kotlin_version = '1.0.0-beta-2423'
ext.gae_sdk_version = '1.9.28'
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.18'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
jcenter()
}
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
dependencies {
appengineSdk "com.google.appengine:appengine-java-sdk:$gae_sdk_version"
compile 'javax.servlet:servlet-api:2.5'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "com.google.appengine:appengine-api-labs:$gae_sdk_version"
compile 'net.sf.jsr107cache:jsr107cache:1.1'
compile "com.google.appengine:appengine-jsr107cache:$gae_sdk_version"
testCompile "com.google.appengine:appengine-api-stubs:$gae_sdk_version"
testCompile "com.google.appengine:appengine-testing:$gae_sdk_version"
}
appengine {
downloadSdk = true
appcfg {
oauth2 = true
}
}
task layout << {
sourceSets*.allSource.srcDirs*.each { it.mkdirs() }
new File(sourceSets.main.resources.srcDirs[0], 'META-INF').mkdirs()
new File(webAppDir, 'WEB-INF').mkdirs()
}
./gradlew layout
에서 src 디렉토리를 만들 수도 있습니다.
IntelliJ 등으로 프로젝트를 로드해 두면 작업이 편해집니다.
Hello GAE/Kotlin
공식 문서 코드를 Kotlin으로 만들었기 때문에 코드는 재미 없지만 일단
src/main/kotlin
에 패키지를 만듭니다.
이번에는 com.inukoya.example
에서 만들었습니다.
바로 아래에 MyServlet.kt
를 만듭니다.
class MyServlet : HttpServlet() {
public override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
res.contentType = "text/plain"
res.writer.println("Please use the form to POST to this url")
}
public override fun doPost(req: HttpServletRequest, res: HttpServletResponse) {
val name = req.getParameter("name")
res.contentType = "text/plain"
if (name == null) {
res.writer.println("Please enter a name")
}
res.writer.println("Hello $name")
}
}
그런 다음 src/main/webapp/WEB-INF/
에 appengine-web-app.xml
를 만듭니다.
application에는 applicationId를 넣습니다만 이번은 로컬로 움직일 뿐이므로 넣지 않아도 괜찮습니다.
appengine-web-app.xml<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<threadsafe>true</threadsafe>
</appengine-web-app>
그런 다음 라우팅합니다. appengine-web-app.xml과 동일한 디렉토리에 web.xml
를 작성하십시오.
web.xml<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.inukoya.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
welcome-file-list의 index.html은 src/main/webapp/
에 작성해 둡니다.
이 작업이 완료되면 다음 명령으로 dev 서버를 시작할 수 있습니다.
$ ./gradlew appengineRun
http://localhost:8080에 액세스할 수 있으면 OK입니다.
코드는 GitHub에 제공됩니다 https://魏Tub. 작은 m/K2 완코/가에코 t인-에 MP
요약
내 생각에 시도했지만 나쁘지는 않다고 생각합니다.
그렇지만, 별로 지금은 단지 Java의 치환일 뿐이기 때문에
무리하게 사용할 필요도 없다고 생각합니다.
Kotlin의 WebFramework도 아직 개발 도상이므로 Kotlin다움을 살렸다
GAE에서 움직이는 Framework가 등장하기를 기다릴지 만들지 할 필요가 있을 것 같았습니다.
참고
Reference
이 문제에 관하여(GAE/Kotlin을 시작한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koki_cheese/items/486e537bb29a1ac5580a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
디렉토리를 만들고
gradle init
로 프로젝트 만들기build.gradle
를 편집합니다.build.gradle
buildscript {
ext.kotlin_version = '1.0.0-beta-2423'
ext.gae_sdk_version = '1.9.28'
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.18'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
jcenter()
}
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
dependencies {
appengineSdk "com.google.appengine:appengine-java-sdk:$gae_sdk_version"
compile 'javax.servlet:servlet-api:2.5'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "com.google.appengine:appengine-api-labs:$gae_sdk_version"
compile 'net.sf.jsr107cache:jsr107cache:1.1'
compile "com.google.appengine:appengine-jsr107cache:$gae_sdk_version"
testCompile "com.google.appengine:appengine-api-stubs:$gae_sdk_version"
testCompile "com.google.appengine:appengine-testing:$gae_sdk_version"
}
appengine {
downloadSdk = true
appcfg {
oauth2 = true
}
}
task layout << {
sourceSets*.allSource.srcDirs*.each { it.mkdirs() }
new File(sourceSets.main.resources.srcDirs[0], 'META-INF').mkdirs()
new File(webAppDir, 'WEB-INF').mkdirs()
}
./gradlew layout
에서 src 디렉토리를 만들 수도 있습니다.IntelliJ 등으로 프로젝트를 로드해 두면 작업이 편해집니다.
Hello GAE/Kotlin
공식 문서 코드를 Kotlin으로 만들었기 때문에 코드는 재미 없지만 일단
src/main/kotlin
에 패키지를 만듭니다.
이번에는 com.inukoya.example
에서 만들었습니다.
바로 아래에 MyServlet.kt
를 만듭니다.
class MyServlet : HttpServlet() {
public override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
res.contentType = "text/plain"
res.writer.println("Please use the form to POST to this url")
}
public override fun doPost(req: HttpServletRequest, res: HttpServletResponse) {
val name = req.getParameter("name")
res.contentType = "text/plain"
if (name == null) {
res.writer.println("Please enter a name")
}
res.writer.println("Hello $name")
}
}
그런 다음 src/main/webapp/WEB-INF/
에 appengine-web-app.xml
를 만듭니다.
application에는 applicationId를 넣습니다만 이번은 로컬로 움직일 뿐이므로 넣지 않아도 괜찮습니다.
appengine-web-app.xml<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<threadsafe>true</threadsafe>
</appengine-web-app>
그런 다음 라우팅합니다. appengine-web-app.xml과 동일한 디렉토리에 web.xml
를 작성하십시오.
web.xml<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.inukoya.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
welcome-file-list의 index.html은 src/main/webapp/
에 작성해 둡니다.
이 작업이 완료되면 다음 명령으로 dev 서버를 시작할 수 있습니다.
$ ./gradlew appengineRun
http://localhost:8080에 액세스할 수 있으면 OK입니다.
코드는 GitHub에 제공됩니다 https://魏Tub. 작은 m/K2 완코/가에코 t인-에 MP
요약
내 생각에 시도했지만 나쁘지는 않다고 생각합니다.
그렇지만, 별로 지금은 단지 Java의 치환일 뿐이기 때문에
무리하게 사용할 필요도 없다고 생각합니다.
Kotlin의 WebFramework도 아직 개발 도상이므로 Kotlin다움을 살렸다
GAE에서 움직이는 Framework가 등장하기를 기다릴지 만들지 할 필요가 있을 것 같았습니다.
참고
Reference
이 문제에 관하여(GAE/Kotlin을 시작한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koki_cheese/items/486e537bb29a1ac5580a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class MyServlet : HttpServlet() {
public override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
res.contentType = "text/plain"
res.writer.println("Please use the form to POST to this url")
}
public override fun doPost(req: HttpServletRequest, res: HttpServletResponse) {
val name = req.getParameter("name")
res.contentType = "text/plain"
if (name == null) {
res.writer.println("Please enter a name")
}
res.writer.println("Hello $name")
}
}
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<threadsafe>true</threadsafe>
</appengine-web-app>
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.inukoya.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
$ ./gradlew appengineRun
내 생각에 시도했지만 나쁘지는 않다고 생각합니다.
그렇지만, 별로 지금은 단지 Java의 치환일 뿐이기 때문에
무리하게 사용할 필요도 없다고 생각합니다.
Kotlin의 WebFramework도 아직 개발 도상이므로 Kotlin다움을 살렸다
GAE에서 움직이는 Framework가 등장하기를 기다릴지 만들지 할 필요가 있을 것 같았습니다.
참고
Reference
이 문제에 관하여(GAE/Kotlin을 시작한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koki_cheese/items/486e537bb29a1ac5580a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GAE/Kotlin을 시작한다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koki_cheese/items/486e537bb29a1ac5580a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)