Java動いているサイトにkotlinを使いつつ追加実装したい


# 前提

* あまり知識なし

# 環境構築

Intellij IDEA

* declarationがうまくいかない
	* モジュールフォルダとかだと思ったけど違う感
	* 環境とは別に、プロジェクト構造のメニューがあり、そこでライブラリフォルダを設定した
	* request.getAttribute()がまだできない
		* tomcatをbrewでインストールして、そのlibをライブラリ指定すると参照できた
			* global libraryとして追加
			* （ローカルと名称が被っているためと思われる）置き換えはNoとするのが良さそう

IntelliJ IDEA TomcatでWebアプリケーションを起動する - gyamin's diary
http://gyamin.hatenablog.com/entry/2016/10/24/001025

Apache Tomcat® - Welcome!
http://tomcat.apache.org/

Working with modules - Help | IntelliJ IDEA
https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

How do I evaluate objects when debugging a JSP? – IDEs Support (IntelliJ Platform) | JetBrains
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206853245-How-do-I-evaluate-objects-when-debugging-a-JSP-

# Tomcatのweb.xml

自分が新人だった頃に知っておきたかったweb.xmlの基礎。 - 感謝のプログラミング
https://blog.codebook-10000.com/entry/20130607/1370621189

web.xmlの記述 - アプリケーションの作成と配置 - サーブレット入門
https://www.javadrive.jp/servlet/context/index3.html

Tomcatのweb.xmlを理解してURLとの整合性を考える
https://searchman.info/java_eclipse/1050.html

1. サーブレットの設定と実行 (3) | TECHSCORE(テックスコア)
http://www.techscore.com/tech/Java/JavaEE/Servlet/1-3/

	デフォルトサーブレットなるものがあるのか

Javaの道：Servlet（１４．アノテーション）
http://www.javaroad.jp/servletjsp/sj_servlet14.htm

	アノテーション

サーブレットの作成とコンフィグレーション
http://otndnld.oracle.co.jp/document/products/wls/docs92/webapp/configureservlet.html

	各 Web アプリケーションには、デフォルト サーブレットがあります。このデフォルト サーブレットは管理者が指定できますが、指定しない場合、WebLogic Server では FileServlet という内部サーブレットがデフォルト サーブレットとして使用されます。

デフォルトサーブレットについて調査と / で終わるリクエストにマッピングするにはどうすればいいのか？の話 - my-notebook
http://www.my-notebook.net/dac9a02c-d9c4-48a9-9505-be767ff65886.html

	だったら、使っているサーブレットコンテナ(ここではjetty)で通常適用されるデフォルトサーブレットを継承したサーブレットを使えばいいじゃないかと。

# サーブレットとJSP

基礎から理解しよう！サーブレット（Servlet）/JSPとは | TechAcademyマガジン
https://techacademy.jp/magazine/17483

	jspは動的にコンパイルされるってことかな。。
	Tomcatとかで行われるのかな。ある程度キャッシュとかされるのかな。。

Java Servletとは｜「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word12835.html

	サーブレットコンテナか。。
	１．ライフサイクル管理
	２．マルチスレッド対応
	３．プラットフォーム非依存
	なるほろ。。

知っておきたい Java ServletとJSPの概念 | パソコン工房 NEXMAG
https://www.pc-koubou.jp/magazine/2292

	それでは、なぜWebアプリを作るのにServletとJSPという2つの手段が用意されているのでしょう。それは、プログラマーとデザイナーが仕事を分担できるようにするためです。
	なるほろ。。
	
	EL（Expression Language、式言語）という表現
	そんなのもあるのか。

# IDEをつかったリーディング

* ダーブレットのデコンパイルが便利、どうやってるんだろう
* 特に意識せずデコンパイルされたので後付け調査
* デコンパイルしたファイルを一括で吐き出せないのかな
* たぶん、デフォルトで `Java Bytecode decompiler` がはいってる
* `output directory` ってなんだろ

IntelliJ IDEAでclassファイルをデコンパイルしたソースコードを表示する - Qiita
https://qiita.com/tamura__246/items/e6d7a8e4d3d8ac5f35e7

Java 逆コンパイルしてデフォルトコンストラクタを確認 - Qiita
https://qiita.com/yk0614/items/16a32e0f9542b6acd7e3

JAVAの逆コンパイル(デコンパイル) - Qiita
https://qiita.com/RUSH234dev/items/a8b933aa0514fc8f51c1

intellij-idea - JavaソースがIntellijでデコンパイルされたファイルに置き換えられました
https://stackoverrun.com/ja/q/10586975

# warってなに。。

レイヤーや用途でわけているが、圧縮の形式はzipとな。

バグだらけのWebアプリケーションをKotlinで実装してみました - Qiita
https://qiita.com/tamura__246/items/ce2932809b9e4ec0297e

JAR,WAR,EARそれぞれの違いについて - Java習得を目指すブログ
http://d.hatena.ne.jp/java-wizard/20140311/1394538929

Java - Javaのパッケージング形式はJAR WAR EARと3つも必要なのでしょうか？｜teratail
https://teratail.com/questions/32911

# kotlinを導入する検討

* 方向性
	* 既存のものを変換
	* 新規のものを切り分けて追加

* gradleでのビルドの事例

できそうだな。

Kotlin でサーブレット - A Memorandum
http://etc9.hatenablog.com/entry/2015/05/13/073641

Creating Web Applications with Http Servlets - Kotlin Programming Language
https://kotlinlang.org/docs/tutorials/httpservlets.html

* フレームワーク
* 環境
* 影響範囲を狭くする
* リスクを把握
* 今後のことも考えておく

Intellij IDEAで実行可能なjarを作る方法 - Qiita
https://qiita.com/nwtgck/items/7a61c5bb9d5b2d266cfe

Webフレームワーク Jooby と Kotlin の組み合わせがいい | yan's Handicraft
https://ti.que.jp/p/2018/09/17/jooby_kotlin/

Kotlin サーバーサイド開発にあたって選択した軽量 Web フレームワーク Jooby の紹介とその理由｜MMJエンジニア Tech Blog
https://www.mediamaxjapan.com/techblog/articles/why-we-choose-jooby/

Kotlin+SparkでWEBアプリを作ってテストを書く - Qiita
https://qiita.com/fisherman08/items/7593a654633e5808956a

tsuyok/kotlin-ddd-demo
https://github.com/tsuyok/kotlin-ddd-demo

system-sekkei/isolating-the-domain： Spring Boot ： gradle, Spring MVC, Thymeleaf, MyBatis and Spring Security sample
https://github.com/system-sekkei/isolating-the-domain