Javaは世界でもっとも広く使われているプログラミング言語の1つだが、Javaの生みの親であるJames Gosling氏が、マサチューセッツ工科大学(MIT)のリサーチサイエンティストLex Fridman氏のポッドキャストに登場し、今や何十億台ものデバイスで使用されており、「Android」の開発にも使われたJavaを作った経緯やその動機について語った。 Gosling氏がSun MicrosystemsでJavaをリリースしたのは25年前のことだ。Javaの存在は、2009年にOracleがSunを買収した大きな理由の1つになっただろう。Oracleによれば、今日では世界で510億のJava仮想マシン(JVM)が動いているという。 同氏は、Javaを開発したきっかけについて聞かれると、同氏のグループは当時、コンピューティング業界が業界の外で見逃している機会があるのではないかと心配にな
1つにつき3行で書いた、言語の話は炎上しがちだから匿名で。 C言語: 現代だと電子機器のプログラミングで使うよ! Linuxとかサーバープログラムの内部で使われることが多いけど、 自分で手を加えることは少ないから安心して! C++: 実行速度が超高速なのと複雑怪奇な構文が特徴だよ! ゲームプログラミングや動画編集ソフトといった高いパフォーマンスが 求められるシステムで使われるイメージがあるから、最初は近づかなくても良さそうだね! C#: Unity でゲーム作る時に使うよ! 比較的書きやすくて勉強になるからオススメ出来るけど、 Microsoft にズブズブな印象が強いのがちょっと気になっちゃうね! Java: Androidアプリとかサーバーアプリ作るのに使えるよ! 勉強しやすくて個人的には良いと思うけど、 現代だったら他の言語のほうが書きやすくてオススメかな?? Scala: Java
みなさんこんにちは、虎の穴ラボのH.Kです。 Java 14のリリースが2020/03に予定されておりますが、今回はさらに先のリリースで入ると言われているSealed Typesという機能を詳しく見ていきます。 Sealed Typesと聞いて最初に感じたことは「Kotlinでも似たような機能(Sealed Class)がある」ということだったのでKotlinの機能との比較を通して内容を整理できたらと思います。 Sealed Typesとは 大まかな言い方をしてしまえば、継承先を制限できる機能です。 詳細については以下のJEPに記載があります。 openjdk.java.net 執筆時点(2020/02)ではPreviewとなっているため、この機能を利用するためにはjavacを実行する際に--enable-previewオプションをつけて有効化する必要があります。 JEPのMotivati
昔:感情があった 元々ぼくはきれいなコードを書くことへのモチベーションが高かった。 プログラマーになったばかりの頃にリーダブルコードを読んで感動したというのもあるし、ちょうどその頃DDD原理主義みたいなものが流行ってて、はてブのITタブにはきれいなコードを書くためのコーディング規約やテクニックに関するブログエントリやLT資料がたくさん流れていた。 最初にAndroidの大規模プロジェクトに関わった時は、元々のコードがかなりひどかった(初めてJavaを書く人達だけで書いたとしか思えない、現代ではおおよそあり得ないようなレベル)ため、リファクタリングをすることに非常に意義もやりがいも感じたし、どうせきれいにするのならばと張り切って出来るだけリーダブルなコードを書こうとした。 その後チームにgit化の波が訪れ(自分が推進したんだが)PRによるコードレビューなるものもやるようになった。 意識が高か
Mirrativ Androidエンジニアのmorizoooです。 Mirrativのエンジニアは週4日をプロダクト開発に、週1日を開発体験の向上に時間を割いおり、CTOによる旗振りのもと、エンジニア主導で技術的負債の返済に取り組んでます。 今回は、Androidチームで取り組んだ技術的負債の返済のために行った取り組みについて紹介します。 背景 以前、2019/04に 突撃!!隣のアーキテクチャ - connpass でもお話したのですが、Androidアプリが主に以下の理由でつらい状態なっておりました。 ロジックが散在 今ではあまり使われないライブラリへの依存 JavaとKotlinの共存 speakerdeck.com これに対してAndroidチームで以下の取組みを行いました。 ActivityとCustomViewの再設計 ライブラリの最新化 Kotlin化の推進 それぞれのトピッ
//Systemは省略可能 System.Console.Write("Hello "); Console.Write("World"); >>> Hello World Console.WriteLine("Hello "); Console.WriteLine("Workd"); >>> Hello World System.out.print("Hello "); System.out.print("World"); >>> Hello World System.out.println("Hello "); System.out.println("World"); >>> Hello World
AndroidもScalaで書きたい!という衝動に身を任せ、パズルゲームを作ってみました。 公開中のゲームはこちらです。 4方向にフィールドのあるパズルゲームです。ブロックを積んで消していく風のやつですね。 コア部分のコードはこちらです。 これまで、ブラウザで動くscala-js版や、ターミナル上で動くscala-native版を作っていたのですが、満を持してAndroid版に挑戦した次第です。 今回は、とりあえずリリースまで出来たということで、セットアップやScalaで書く上での実装方針など、軽く触れたいと思います。 モチベーション Scalaの資産を活用してAndroidアプリを作りたい Androidアプリをリリースして、知見を得たり、実験をしたい 前者は完全な趣味の領域です。Scalaでなんでも書きたい欲を満たしたいだけです。 後者は、お仕事でAndroidを触る中で、色々と試して
Spring以前 RPC 業務で使うシステムはサーバー間で連携することが多い。2019年現在ではREST apiに対してjsonやprotocolbufferで呼び出す事が当たり前のように行われているが、まだjsonも発見されていない時代はもっと複雑な仕組みが取られていた1。異機種間でやりとりするためのCORBAや、機種に依存しないデータプロトコルのASN.1なども利用されていたが、仕様は複雑でそれぞれをハンドリングするライブラリは有償で売られ、ベンダーからサポートを受けながら使用するようなものだった。 RMI Javaの世界ではJava同士でやりとりするためのRMIが定義され、比較的に楽にRPCできるようになった2。とはいえhttpでrestをコールすることに比べたらアホみたいな複雑さである。 https://docs.oracle.com/javase/jp/1.3/guide/rmi
はじめに ここ数年で、Kotlinは急速な勢いで台頭してきており、Androidでは(おそらく)既に支配的な言語になっているかと思います。サーバーサイドKotlinはまだまだこれからというところがあるように感じますが、今後の発展次第でシェアを伸ばす可能性が高いでしょう。この記事では、そんなKotlinとScalaの関係について説明したいと思います。 結論からいうと、KotlinはScalaの直系の子孫であり、ScalaはKotlinの親であるといって差し支えないくらいKotlinがScalaから受けた影響は深いです。このことについて、私はパクリだとかそういうつもりは一切ありません(元々、プログラミング言語の発展というのは、色々な言語からアイデアを集めてきてこそですし)。しかし、最近、Kotlinについて、GroovyとScalaのいいとこどりであるとか(そのくらいにしか影響がないという意味
RubyのJIT開発でやろうと思ってることが大体 @_ko1 さんの作業待ちでブロックしていて暇なので何かを書こうと思い、JVMを書くことにした。 まだその辺のアプリを気軽に動かせるレベルでは全然ないが、別に秘密裏に開発する必要もないと思ったので公開した。 github.com これの紹介と、現時点で学べたことをこの記事に記録しておく。 何故JVMなのか 仕事でJVM言語を使っている 僕が所属しているTreasure Dataでは、大雑把に言うと本番サーバーのサービスは大体Ruby, Java, Scala, Kotlinで書かれている*1ので、既にRubyのVMはある程度わかる*2ことを考えると、JVMさえ理解してしまえば社内の主要な言語評価系を抑えたことになり、運用面で活躍の機会が増える気がしている。 また、自分が最近一番書いているのはKotlinなのだが、JVMで動かしていることに由
UnityでAndroidの機能を拡張する2つの手法とは:Unityで楽々スマホ用3Dアプリ開発入門(2)(1/3 ページ) UnityはAndroidの機能を自由に拡張できる! 前回の「iOSアプリのAndroid移植も簡単なUnityの基礎知識」では、「Unity」の概要や使い方、Unityの機能を拡張するプラグイン、リモートデバッグツールなどを紹介しました。 開発コストだけでなく移植コストを最小限に抑えてくれるUnityですが、よくあるマルチOS対応のソリューションでは、逆に個別のOSごとの個別実装ができない、あるいは難しいという点があったりします。 特にネイティブコードとの連携、ネイティブデバイスとの連携などが最たるものです。しかしUnityでは、この問題を解決する方法を提供しています。 今回はUnityが提供しているネイティブコードとの連携手段として、以下の2つの方法についてサン
完全にフリーな Android を作る「IcedRobot」なるプロジェクトが進んでいるらしい (fosdem.org の記事、本家 /. 記事、InfoQ の記事) 。 Android の Dalvik VM には Java 由来の技術が採用されており、それが Oracle の著作権を侵害しているとして Google が Oracle に訴えられる事態になっている。IcedRobot は OpenJDK といったフリーな Java 技術を利用することで、完全にフリーな Android 互換環境を作るということが目的とのこと。 IcedRobot は GNUDroid と GNUBishop と呼ばれるサブプロジェクトから構成されるとのことで、GNUDroid はフリーソフトウェアコンポーネントによる Android 実装、GNUBishop は Android にデスクトップ機能の標準的
moblはEclipse上で開発し、HTML5/CSS/JavaScript/画像を生成するスマートフォン向けプログラミング言語。 moblはJava製のオープンソース・ソフトウェア。スマートフォンの人気がとても高い。特にWebKitのモバイル版を組み込んでいるものが殆どで(iOS/Android/Palm Pre/Blackberryなど)HTML5の恩恵にあずかりやすいのが良い。 開発環境はEclipse そんなHTML5のパワーを使えば、まるでネイティブアプリのような動作をさせることも可能になっている。そのためのスマートフォン向けライブラリは数多くあれど、moblは一味も二味も違う。完全に専用言語でスマートフォン向けWebアプリケーションを開発できる。 moblはEclipse用のプラグインを配布しており、それをインストールした後プロジェクトを作成する。使うのはmoblという拡張子の
AndroidのフレームワークにはAndroidを強く特徴付けるIntentという仕組みがある。 IntentはActivityやServiceといった実行単位のコンポーネントを起動する場合に利用される。 プログラマはstartActivityやstartServiceといった関数を用いてActivityとServiceの起動を命ずるが、このとき引数にIntentを使うことにより実行対象を指定する。 Intentが優れているのはこの指定方法にある。 Intentは明示的にクラス名を指定することにより明らかに実行されるコンポーネントを指定することが可能だ。 しかし、より優れたIntentの利用方法は暗黙的なIntentの利用である。 暗黙的なIntentを用いることにより、直接実行コンポーネントを指定する必要がなくなる。 これによりコンポーネント間の結合はより緩やかな疎結合となる。 呼出元の
前回はAndroidの機能やアプリの紹介を通じて,Androidの概要や特徴をお伝えした。第2回からはいよいよ,Androidアプリの開発手法の説明に入る。今回の記事のゴールは,まず開発環境を整え,プログラミングの初めの一歩として「Hello World」アプリケーションを構築することだ。 Androidアプリケーションの開発には,Googleが無償で提供する「Android SDK」を利用する。Android SDKは開発者向けサイト「Android Developers」(図1)からダウンロードできる。Android SDKは,Java言語を利用した開発に必要なツールとAPIを提供しており,Androidエミュレータも含まれているので,Android SDKをインストールしたPC上でのデバッグ作業も可能だ。 Android Developersには,開発ガイドが用意されており,開発に必
The error was detected while processing this request. Be sure of followings: The CGI script does exist. The permission of CGI script is 755. The Perl path in CGI script is #!/usr/local/bin/perl. CGIスクリプトの呼び出し中にエラーが発生しました。 下記の点をご確認ください。 ・CGIスクリプトが存在すること。 ・CGIスクリプトのパーミッションが755であること。 ・CGIスクリプトのperlのパスが #!/usr/local/bin/perl であること。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く