きしだのはてな このページをアンテナに追加 RSSフィード

2018-05-07(月) Javaのライセンスの現状をまとめた

Javaのライセンスの現状をまとめた 01:35  Javaのライセンスの現状をまとめたを含むブックマーク

なんか、「Javaが有償化された」「無償サポートがなくなった」「Oracleと契約するかJavaをやめるか」のような話がちらほら流れるようになってきて、事実とは異なってたり誤解があったり状況が妥当に伝わってない気がするなと思ったので、現状についてまとめてみた。

ちょっと話をする機会があったのと、現実問題としてちゃんと自分でも把握しておく必要もあったので。

もし他にもサポート提供する企業があるとか、そうは言っても現実的にはこうなんじゃね?みたいな話があればツッコミおねがいします。

Javaのサポートについてのまとめ - Qiita

2018-05-03(木) JShellを使ってJava2Dであそぶ

[]JShellを使ってJava2Dであそぶ 05:03 JShellを使ってJava2Dであそぶを含むブックマーク

JShellを使ってJava2Dであそんでみました。楽しい。


Javaが初めての人はこちらもどうぞ。

JShellで始めるJava - Javaの世界を覗いてみる - Qiita


ということで、まずjavax.swing.*をimport

jshell> import javax.swing.*

JFrameを用意

jshell> var f=new JFrame("guruguru")
f ==> javax.swing.JFrame[frame0,0,0,0x0,invalid,hidden, ... tPaneCheckingEnabled=true]

そして、画像を表示するためのJLabelを用意

jshell> var label=new JLabel()
label ==> javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0. ... rticalTextPosition=CENTER]

画像としてBufferedImageを用意してますが、BufferedImageまで入力して[Shift]+[Tab]からの[i]を押すとimportのおすすめが出るので[1]を押してimportします。

jshell> var image=new BufferedImage
0: 何もしない
1: import: java.awt.image.BufferedImage
選択:
Imported: java.awt.image.BufferedImage


で、こんな感じでBufferedImageを用意

jshell> var image=new BufferedImage(400,300,BufferedImage.TYPE_INT_RGB)
image ==> BufferedImage@5ccddd20: type = 1 DirectColorModel ... 0 yOff = 0 dataOffset[0] 0

画像はImageIconを介してIconとしてJLabelに追加します。

jshell> label.setIcon(new ImageIcon(image))

labelをJFrameに追加したら、show()で表示

jshell> f.add(label)
$7 ==> javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,bo...sition=CENTER]

jshell> f.show()

録画領域からはみでていたので移動

jshell> f.setLocation(20,40)

packすると画面サイズが調整されます。

jshell> f.pack()

描画を行うためにGraphics2Dを取得

jshell> var g=image.createGraphics()
g ==> sun.java2d.SunGraphics2D[font=java.awt.Font[famil ... .Color[r=255,g=255,b=255]]

描画色を設定するのだけど、Colorはjava.awt.Colorなので、また[Shift]+[Tab]して[i]を押してimportを補完

jshell> g.setColor(Color
0: 何もしない
1: import: java.awt.Color
選択:
Imported: java.awt.Color

ここでは赤に設定します。

jshell> g.setColor(Color.RED)

線を引いてみる

jshell> g.drawLine(20,20,300,200)

labelをrepaintすると表示されます

jshell> label.repaint()

青で四角を描く

jshell> g.setColor(Color.BLUE)

jshell> g.fillRect(50,40,200,100)

jshell> label.repaint()

crearRectで一旦消去

jshell> g.clearRect(0,0,400,300)

jshell> label.repaint()

モアレを表示してみる。

jshell> IntStream.range(0,30).map(y->y*10).forEach(y->g.drawLine(0,y,400,300-y))

jshell> label.repaint()

画面消去

jshell> g.clearRect(0,0,400,300)

jshell> label.repaint()

ここもAffineTransformで[Shift]+[Tab]を押したあと[i]を押してjava.awt.geom.AffineTransformをimportしています。

{〜}の中は;(セミコロン)で行を終わらせる必要があるので注意。

で、最後の[}]を入力したら、ぐるぐる。

jshell> for(int i=0; i< 100;++i){
   ...> g.clearRect(0,0,400,300);

   ...> g.setTransform(AffineTransform.getRotateInstance(Math.PI*i/100,200,150));
   ...> g.fillRect(0,0,400,300);
   ...> label.repaint();
   ...> Thread.sleep(30);
   ...> }

最後に/listをしてぐるぐるに26というidが振られているのを確認して/26としてもう一度ぐるぐる。


Graphics2Dの使い方は、ドキュメント見て

https://docs.oracle.com/javase/jp/9/docs/api/java/awt/Graphics2D.html

トラックバック - http://d.hatena.ne.jp/nowokay/20180503