Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
元ネタ: 僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - 亀岡的プログラマ日記 OOPの文脈で見ると、元の記事が言っていることもわからなくはないのですが、対象が広すぎていろいろと不正確になってしまっているので、ちょっとまとめてみます。 元の記事が対象にしているのは、Maybe / Optional / Nullableの3つです。 対応する型を持つ言語を見てみると、下記のようになります。 Maybe(Haskell) Optional(Swift/Java) Nullable(C#) これらは、「値がないこと」を表すもの、という見方では同じですが、それぞれ異なる価値観の元に作られています。 Maybe/OptionalとNullable これらはすべて型パラメータを取ります*1。 しかし、この中でNullableだけは型パラメータに
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Android プラットホームの API はひどい。 プラットホームというもの一般の API デザインが時代にあわせ少しずつ良くなる中、Android は時代を10年くらい巻き戻した感がある。深い継承。でかいクラス。ヒラより多いマネージャたち。コンサーンもレスポンシビリティもテスタビリティも何もない。 モバイルデバイスには従来の Java が気にかけなかった様々な制約がある。同じように行かない。それはわかる。でもねえ。 過去にもひどい API のプラットホームはあり、人々は大きく二つの方法で立ち向かった: 一つ目は、プラットホームを無視して自分で再発明する方法。Qt や XUL, Swing みたいなクロス OS のツールキットはだいたいこの路線。二つ目は抽象化レイヤをかぶせて隠す方法。Windows API に対する MFC, WTL や SWT. あるいは DOM に対する jQuer
プログラミングにはレベルの低い・高いがある。ここでいうレベルとはCPUとかストレージデバイスといった生のハードウェアに近いかという意味である。レベルが低いほど生のハードウェアを意識しなければならない。カーネルは低レベルなソフトウェアの代表である。高尚かどうかと混同されることを嫌ってか、低レイヤ・高レイヤという言い方も良くする。私はあえて混同させたくてレベルという単語を使用している。 私は元々低レベルのプログラミングの方が計算機を操ってる感があって好きだった。しかし、しばらく離れてJavaとかPythonとか高レベルなことをやっていたが、ふと低レベルのところを再び触りたくなったので、 ハッカーのたのしみ Binary Hacks Cプログラミング高速化研究班 等を読み返しながら勉強している。低レベルはちょこちょこっとチューニングするだけで演算が高速化していき、ハッカー感が得られるので楽しい。
関連記事 この記事も古くなりましたね。執筆時の実装バージョンKotlin 0.12から1.0.2へのアップグレード対応をした際の知見を記事にしました。 Kotlinを実案件で使いました 先日、僕の勤め先のQonceptは『リアル鬼ごっこ』×富士急ハイランド 巨大遊園地からの逃走を開発、リリースしました。 富士急ハイランドで実際に鬼ごっこをする企画で、一般のお客さんがスマホで専用アプリを使いながらクリアを目指します。園内には鬼役のスタッフや、ゲーム進行に関わる設備などがあり、これらとスマホがiBeacon(BluetoothLE)を用いて連動することで、ダメージを受けたり、アイテムを使用したり、クイズを解いたりなどします。 Qonceptの開発範囲は、iOSアプリ(とAppleWatchアプリ)、Androidアプリ、サーバサイドでした。 受注確定となった時点で、残り日数と開発者リソースに対
Material designed apps are all the rage these days. Gone are the days of Gingerbread design, and if your app is Holo, you’re already behind. Everyone (including your project manager) will want a shiny new Material App — but what about the people still using older Android devices? You can’t leave them behind, so that’s where the Material Support Library comes in. SetupIn order to use the Material S
ジェネリック (generic) : 総称 C#などでは「ジェネリック」と表記されていますが、Javaの日本語ドキュメントではJava SE6まで「総称」、Java SE7では「ジェネリクス」となっています。 ジェネリックのおもな用途はコレクションです。 ジェネリック型宣言 (generic type declaration) class クラス名<E> { E フィールド名; } このときクラス名は原型 (raw type) と呼ばれます。型変数 (type variable)「E」は、型パラメータ (type parameter) と呼ばれ、オブジェクトの生成時には具体的な型で置き換えます。 型変数の名前に特別な意味はありませんが、一般的には次の名前が使用されます。 E … Element (Javaのコレクション フレームワークで多用されています) K … Key N … Numbe
はじめに プログラミング技術の歴史は、ありとあらゆる歴史がそうであるように、いろんな「史観」で眺めることができます。ならば、プログラミング技術の歴史を、「エラーハンドリングとの戦い」という視点から見ることもできるのではないでしょうか。本日は、エラーハンドリングとの戦いの歴史を俯瞰することで、エラーハンドリングの勘所について考えていこうと思います。 なお、このエントリはNDSという勉強会の第41回で発表した内容と同一です。 Cの時代 Cの時代のエラーハンドリングでは、関数の返り値と、グローバル変数errnoを見ることで処理が成功したか失敗したかを見るのが一般的でした。 例として、文字列をlongに変換するstrtol関数をmanで引いてみましょう。すると、だいたい以下のようなことが書かれています。 変換に失敗すると、0を返す 変換に失敗した場合、グローバルな変数であるerrnoに以下の定数を
なんて書いたりします。で、だいたい android-22 みたいな感じになるんですけど、でもやっぱり世界ってのは広くて、ふと見たらなんか android-١٦ とか android-၂၂ とか不思議なやつがいるんですよ。 何それ読めない。 もしかして SDK_INT が変な端末がいるのかな??と一瞬考えたんですが、 Build.VERSION.SDK_INT は名前通りプリミティブな public static final int なので疑いようがなかった。 AndroidじゃなくてJavaの仕様 でよくよく調べると、 java.util.Formatter のドキュメントに [Number Localization Algorithm](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#l10n algor
いや、ネタとかじゃないんで。 AndroidJavaそろそろ限界問題 以前の記事にも書いたけど、最近の関数型プログラミングやRxJavaなどの流れの中で、ラムダも書けない言語では限界を感じ、何かAndroid開発を救ってくれる魔法のアイテムを探す必要に迫られていました。 そして行き着いたのがKotlinでした。 Kotlinとは Kotlinはプログラミング言語です。 JVM言語で、いわゆるaltJavaの一つです。 開発したのはAndroid StudioのベースとなっているIntelliJを開発しているJetBrains社で、2011年に生まれたばかりのとても幼い子です。 特徴は型推論、null安全、高階関数、可愛い名前などで、Javaより書きやすく関数的で、尚且つScalaほど複雑にはならない事を目指しているようです。 最近ではSwiftに似ていると言われるようです。 なぜKotli
Just as there was Retroweaver et al. for running Java 5 code with generics on Java 1.4, Retrolambda lets you run Java 8 code with lambda expressions, method references and try-with-resources statements on Java 7, 6 or 5. It does this by transforming your Java 8 compiled bytecode so that it can run on an older Java runtime. After the transformation they are just a bunch of normal .class files, with
(7/7追記)僕は斜め読みだったんですが、もっときちんと読んだ上で解釈を書いてくれている方がいます。僕も時間をとって全文を読みたいとは思っていますが、まだ時間がかかりますし、yudaiさんの会社の方が妥当性は高いと思いますので、そちらをご参照ください↓ 朝っぱらから色々衝撃が走った第一四半期の最終日ですが、OracleとGoogleの裁判について、どのあたりが問題だったとされるのか気になるので判決文等を読んでみました。 経緯 2010年8月、OracleはGoogleを訴える。当初の争点は特許侵害 (publicKey1) 2012年4月、サンフランシスコ連邦地裁の法廷開始 2012年5月、Googleの特許侵害はないとの陪審評決。ただし、フェアユースは意見が別れる。 2012年6月: Oracle対GoogleのJava/Android訴訟、損害賠償金ゼロで合意。今回議論された37件のJ
「29日の最高裁判所の判断は、イノベーションと、著作権保護を拠り所にイノベーションを推進する技術業界にとっての勝利である」とOracleの法務顧問を務めるDorian Daley氏は声明で述べた。 Googleは、法廷での争いを続けたい意向を表明した。 「ソフトウェア業界でイノベーションと競争を促進する相互運用性を引き続き擁護していくつもりだ」とGoogleの広報担当者は述べた。 The Wall Street Journal(WSJ)によると、Googleは、基本的なJavaコマンドに関する著作権をOracleが主張できるべきではないと主張してきたという。しかしOracleは、Javaコードは同社の所有物であり、Javaを開発したSun Microsystemsを2009年に買収したことで同社が著作権を有していると反論していた。 今回の裁決は、Googleが「Android」モバイルOS
Swift 2.0 の Error Handling ってどんな機会に使うんだろうと思いながら過ごしていたら、NSFileManager の contentsOfDirectoryAtPath:メソッド で縁があったので、そこから感じたことを記してみることにしました。 Swift 2.0 の Error Handling というのは、エラーの状況に応じて適切な回復手段を提供するための仕組みで、これまでの真偽値やオプショナルを使った方式のように、成功したか失敗したかだけでは物足りない場面をカバーできるもののようです。 また、NSError を使った Cocoa フレームワークのエラー処理を自然に扱えるようにデザインされたものという位置づけもあるようです。 Cocoa の Error Handling NSFileManager の contentsOfDirectoryAtPath: に見る
Facebook、静的コード解析ツール「Infer」を公開。Objective-C/Java/Cコードのバグを指摘してくれる Inferが対応するコードはAndroidのJavaとiOSのObjective-C、およびC。現時点ではAndroidとJavaではNullPointerExceptionおよびリソースのリーク。iOSとCコードではメモリーリークを発見してくれます。 実際にプログラムを実行することなくバグを発見しようとする静的コード解析は、コードをビルドしてテストプログラムなどを実行するよりも迅速にバグを発見できる方法として期待されています。 Inferも、Facebookがより早く高い品質のソフトウェアをデリバリする目的で開発されたものです。下記はInferを発表したブログ「Open-sourcing Facebook Infer: Identify bugs before y
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く