Java

Spring Boot と Angular2 をタイプセーフに繋ぐ

フロントエンドの開発は、TypeScript や flow によりタイプセーフに行えるようになってきています。 そうなるとバックエンドとフロントエンドの通信もタイプセーフにしたくなってくるはずです。 Swagger を使えばそれが実現できそうです。 Swagger により An…

SpringFox の required の挙動を変える[Spring][Swagger]

SpringFox の required の挙動を変えたいと思い、試みました。 まずは、状況説明から。 RequestParam アノテーションだけ付けた場合 @GetMapping("/foo") public String foo(@RequestParam Integer id) { return "bar"; } 上記のような場合、id は必須になり…

Java で smart cast っぽいことをやる

小ネタです。 Kotlin とかの smart cast, TypeScript とかの Type Guard のようなことを Java でできないかなと。 変数の型をチェックしたら、自動でキャストされているみたいなやつです。 普通に書くと if (pet instanceof Bird) { ((Bird)pet).fly(); } el…

Java で if 式っぽいことをやる

Java で if 式っぽいことができないかなーと思い考えてみました。 Java で if 式っぽい事をやってみた。これ、キャストなしで、できないかなー。 #教えて pic.twitter.com/EqUh8wes8F— トモフミ (@tomofummy) 2016年4月17日 キャストをなくすには、1個 stati…

初心にかえって Socket クラス で HTTP Hello, World

最近あまりブログ書くネタもなく。 4月1日ということで、初心にかえって Java の Socket クラスで HTTP Hello, World. import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; impo…

REST API をタイプセーフに呼び出す(Spring Boot + Swagger Code Generator)

はじめに REST API をタイプセーフに呼び出したいのです。 その実現のため WADLとかを追いかけてたんですが、Swagger は完全にノーマークでした。 WADLは、実質終わっているような。 昨年(2015年11月)、Microsoft, Google, IBM などにより Open API Initiati…

続・Java と TypeScript をタイプセーフにツナグ

前回のエントリの続きといった感じです。 自分は、今のところ Webアプリは、サーバサイド Java、クライアントサイド TypeScript で作りたいと思っています。 実際 TypeScript を利用していて、タイプセーフになってないと思う部分がありました。 サーバから…

Java と TypeScript をタイプセーフにツナグ

サーバサイドを Java、クライアントを TypeScript で作った場合、タイプセーフに通信できないかという試みです。 考えられる選択肢としましては、 Thrift とか、いっそサーバサイド Scala, クライアント Scala.js にするっていうのもあるとは思います。 今回…

Java8ベースの Webフレームワークを作ってみた - Java7 EOLを迎えて -

Java7 も本日、EOLを迎えました。 ということで、Java8ベースの Selva という Webフレームワークを作ってみました。 github bintray(jcenter) Overview まずは、最小の コード例 package io.github.chibat.selva.example; import io.github.chibat.selva.App…

Java の template engine の Rythm を試す

Java の template engine で Rythm っていうのがあるんです。 HTMLのテンプレートに限らず、色々な用途でも使えそうです。 Rythm Template Enginerythmengine.org 試してみました。 まずは、Java 。 mainメソッドを持った Model クラスです。 package app; i…

Thrift で client: TypeScript, server: Java

「Thrift いいよー」みたいな話が聞こえてきて、調べてました。 なんか聞いたことあるなと思ったら、Hive の stack trace でよく見かけたわーと思い Hive でも利用されていることを知りました。 Thrift って何かというと wikipedia からの引用だと Apache Th…

WADL(Web Application Description Language)を利用した Web API の作成

最近、'API'っていうと、RESTでJSONをレスポンスするような事を指してる人が多いと思います。 しかし、呼び出し側のコードも提供せず、'API'を名乗るのは如何なものかと思うんですよね。 SOAPやRMIやCORBAとかは、APIといってもいいかもしれないけど。 REST…

Spring の RestTemplate のプロキシ設定

Spring に RestTemplateという便利なRESTクライアントがあるんですが、呼び出すAPIサーバ毎にプロキシサーバを変えたいと思いまして。 システムプロパティいぢらずに済ませたい。ということでコードは、以下の感じです。 import java.net.InetSocketAddress;…

TypeScript と eclipse と Gradle と私

先日に引き続き、Gradle から TypeScript のコンパイルができないかなと考えていたところ、以下の2つのGradleプラグインがありました。 https://github.com/jzarnikov/gradle-typescript-plugin https://github.com/sothmann/typescript-gradle-plugin 試し…

Nashorn(Java8のJavaScriptエンジン)でシェルスクリプト

Java SE 8 からバンドルされる JavaScript エンジンが Rhino から Nashorn に変わります。 そこで シェルスクリプトから Nashorn を試してみました。 準備 以下のように jdk に含まれる jjs のシンボリックリンクを作成しておきます。 ln -si /usr/local/jav…

Spring MVC と JAX-RS のちょっとした比較

Spring MVCとJAX-RSってRESTful web servicesにおいて比較される対象になるかと思います (でもTwitterのタイムライン観ててもJAX-RSはよく出てくるけど、Spring MVCはまったく出てこない)。 APIとかみてるとSpring MVCの方がよさげに見えます。パフォーマ…

いろんなJava Webフレームワークで同じ画面を作ってみる(Ninja web framework編)

いろんなJava Webフレームワークで同じ画面を作ってみる(Ninja web framework編)です。 お題は、こちら。 公式サイト: Ninja web framework バージョン: 1.4 2年以上前と同じテーマの続編を今頃書くという。 Ninja web frameworkは、Play1みたいな感じの…

サーバ上でJDBC接続を確認する簡単な方法

サーバ上でJDBC接続を確認する簡単な方法。Javaに含まれるjrunscriptを利用します。 以下は、Oracleの場合の例 % jrunscript -cp ojdbc6.jar -f - js> var p = new java.util.Properties(); js> p.setProperty('user', 'ユーザ名'); js> p.setProperty('pass…

Medaka 0.2.0リリース

Medaka 0.2.0をリリースしてみました。Medakaは、Javaで作られたオレオレアプリケーションサーバ、およびサーブレットコンテナ上でも動作するWebフレームワークです。 Wiki: https://bitbucket.org/t1000leaf/medaka/wiki/Home ダウンロード: https://bitbuc…

Medaka 0.1.0リリース

Medaka 0.1.0をリリースしてみました。Medakaは、Javaで作られたオレオレアプリケーションサーバです。 ダウンロード https://bitbucket.org/t1000leaf/medaka/downloads New Feature 基本機能に関しては、medaka-X.X.X.jar一つのみで起動できるように修正 M…

オレオレアプリケーションサーバを作ってみた

オレオレアプリケーションサーバをなんとなく作ってたんですが、ちょっとだけ形になってきたのでWikiにまとめて公開してみました。Medakaという名を与えました。 t1000leaf / medaka / wiki / Home — Bitbucket 相変わらずクッキーを扱うAPIとかないんで、ロ…

Gradle + eclipse + WTP

Gradle + eclipse + WTP の組み合わせでのプロジェクト作成をちょっと整理。まずは、ターミナルからappという名前のプロジェクトを作成する。 % APP=app % mkdir -p $APP/src/{main,test}/{java,resources,webapp} % mkdir -p $APP/src/main/webapp/WEB-INF …

オレオレ・アプリケーションサーバを作ってみる

なんとなく、JDKだけで、依存ライブラリなしでアプリケーションサーバを作ってみようと試みました。フレームワークでなく、アプリケーションサーバ。Servlet APIは無視です。 ソース 以下、使い方。 app.properties まずは、設定。 クラスパスが通っている所…

PostgreSQLのResultSetMetaData#getColumnName

地味な話ですが。 PostgreSQLのJDBCは、ResultSetMetaData#getColumnNameの挙動が他のDBのJDBCと違う。 selectするときにカラム名に別名をつけた場合、getColumnNameは元のカラム名、getColumnLabelは別名をとってくるんですが、PostgreSQLは、どっちも別名…

Stripes Frameworkどうよ。その6〜JSONリクエストのバインド

今どきは、Play frameworkやNode.js、Java EE6、Jerseyあたりを追うべきなのかもしれませんが、自分はStripes Frameworkいじってます。JSONリクエストをActionBeanにバインドできるように拡張してみます。Jacksonを使います。ActionBeanにリクエストマッピン…

GPlus Dialy Maker

GPlus Dialy Maker というものを作ってみました。過去のGoogle+への自分の投稿を確認しやすくする整形ツールです。本当は、Twitterでいうところのtwilog、facebookでのlogviewerみたいなものを作りたいと思ったんですが、Google+のAPIがまだちょっとしかない…

Stripes Framework どうよ。その3 〜Interceptorあるよ。

引き続きStripesです。 StripesにもInterceptorの機能が標準であり、色んなフェーズに共通の処理を差しこめるわけです。 package selva2; import jp.sf.amateras.mirage.integration.guice.Transactional; import jp.sf.amateras.mirage.session.Session; im…

オレオレJava Webフレームワークを作ってみる。その3

始まりはここ。今回は、ConfigとJSONレスポンスについて。 web.xml web.xmlで'webappRoot'にWebアプリケーションのルートになるベースパッケージ名を指定します。 <filter> <filter-name>actionfilter</filter-name> <filter-class>org.selva2.webframework.ActionFilter</filter-class> <init-param> <param-name>webappRoot</param-name> <param-value>webapp</param-value> </init-param></filter>

S2Utilでトラバース

指定パッケージ配下をトラバースするのって自力でちゃんとやろうとすると面倒だと思っていましたが、S2Utilを使うと簡単にできました。便利です。以下は、指定されたパッケージ配下でActionクラスを継承するクラスを拾う例です。 package webframework; impo…

いろんなJava Webフレームワークで同じ画面を作ってみる(Play!編)

いろんなJava Webフレームワークで同じ画面を作ってみる(Play!編)です。 お題は、こちら。 公式サイト: Home — Playframework バージョン: 1.1 このフレームワークは、他のフレームワークとは違った凄さがあります。 最初からこの企画に含めなかった自分…