30億のデバイスで走るjavaを支えるjavaエコシステム

26

description

第一回渋谷.javaの死霊

Transcript of 30億のデバイスで走るjavaを支えるjavaエコシステム

Page 1: 30億のデバイスで走るjavaを支えるjavaエコシステム
Page 2: 30億のデバイスで走るjavaを支えるjavaエコシステム

クイズです。

• Javaが走ってないものを当てよ

• 火星探査車(Spirit)

• Android

• Blue-ray装置

Page 3: 30億のデバイスで走るjavaを支えるjavaエコシステム

クイズです。

• Javaが走ってないものを当てよ

• 火星探査車(Spirit)

• Android

• Blue-ray装置

Page 4: 30億のデバイスで走るjavaを支えるjavaエコシステム

理由• Write Once, Run Anywhere でないから

• ある端末で走るのに、他の端末で走らないとかよくありますね…

• Java標準のAPIが使えないから

• JSR173(StAX)とかJSONP(JSR353)とか

• いや、そもそもJVMじゃないし…

Page 5: 30億のデバイスで走るjavaを支えるjavaエコシステム

•30億のデバイスで走るJavaとかおおそれたタイトルですが…

Page 6: 30億のデバイスで走るjavaを支えるjavaエコシステム

•30億のデバイスで走るJavaを支えるJavaエコシステムの話をします。

Page 7: 30億のデバイスで走るjavaを支えるjavaエコシステム

期待していいこと

Page 8: 30億のデバイスで走るjavaを支えるjavaエコシステム

• Maven Central Repoのポリシーを覚える

期待していいこと

Page 9: 30億のデバイスで走るjavaを支えるjavaエコシステム

期待できないこと

Page 10: 30億のデバイスで走るjavaを支えるjavaエコシステム

• Mavenの使い方

• Groovy/Gradleの話だとか

• IntelliJ IDEAの話とか

• 面白いオチとか

期待できないこと

Page 11: 30億のデバイスで走るjavaを支えるjavaエコシステム
Page 12: 30億のデバイスで走るjavaを支えるjavaエコシステム

• もちださん(@mike_neck)

• Groovy、IntelliJ IDEA

• フリーのプログラマーですが、諸事情により云々かんぬん…

• ブログ : mike-neck.github.io

もっかい自己紹介

Page 13: 30億のデバイスで走るjavaを支えるjavaエコシステム

ドラクエやってます• 名前:ひめ(IG506-769)

• チーム:ぶんちんバスターズ

• メイン職業:スーパースター(lv.70)

• 強ボスは僧侶で参戦

Page 14: 30億のデバイスで走るjavaを支えるjavaエコシステム

ライブラリーを知り、ライブラリーを使う• 「標準ライブラリーを使用することで、それを書いた専門家の知識と、それをあなたよりも前に使用した人々の経験を利用することになります」  (『Effective Java』項目47より)

Page 15: 30億のデバイスで走るjavaを支えるjavaエコシステム

プロジェクトでのライブラリーの管理どうしますか?

• 各自でライブラリーを落としてきてパスに加える

• VCSに入れておく

• Ivy/Maven/Gradleで管理する

Page 16: 30億のデバイスで走るjavaを支えるjavaエコシステム

•ライブラリーの管理はIvy/Maven/Gradleを使いましょう

Page 17: 30億のデバイスで走るjavaを支えるjavaエコシステム

Maven Centralの悩み

Page 18: 30億のデバイスで走るjavaを支えるjavaエコシステム

• 我々(Sonatype OSS repository)がApacheやCodehausなどの大きな組織のレポジトリーとの同期を始めた時、これらの組織がレポジトリーの品質に注意を払うだろうと楽観視していた。しかし、実際のところ、怪しいライブラリーが散見された。

(Improving Maven Central and Supporting Maven Ecosystem - http://blog.sonatype.com/people/2010/01/nexus-oss-ecosystem/)

Page 19: 30億のデバイスで走るjavaを支えるjavaエコシステム

• Maven Centralにないartifactがアップロードされる

• メタデータ/javadoc.jar/source.jarがない

• GPG signatureがない

• POMに開発者情報がない

• artifactの依存情報とPOMの内容が異なる

具体的にあった問題

Page 20: 30億のデバイスで走るjavaを支えるjavaエコシステム

Central Sync Requirement - 1

Page 21: 30億のデバイスで走るjavaを支えるjavaエコシステム

Central Sync Requirement - 1• <modelVersion> - 4.0.0

• <groupId> - ちゃんとしたドメインを使うこと

• <artifactId> - ライブラリー・モジュールの名前

• <version> - SNAPSHOTはダメ

• <packaging> - jarまたはwar

• <name> - プロジェクトの名前

• <description> - プロジェクトの概要

• <url> - プロジェクトのURL

• <licenses> - ライセンス形態を記述

• <scm><url> - SCMツールのURL (githubとかbitbucketとか)

• <scm><connection> - SCMのプロトコルを含めたURL

• <developers> - 開発者の情報

Page 22: 30億のデバイスで走るjavaを支えるjavaエコシステム

Central Sync Requirement - 2

Page 23: 30億のデバイスで走るjavaを支えるjavaエコシステム

Central Sync Requirement - 2

• -sources.jarを含めること• -javadoc.jarを含めること• artifact.jar、javadoc.jar、sources.jar、pomの

GPG署名を付けること• maven centralにない依存ライブラリーをpomに記述しないこと• Seasarプロジェクトのライブラリーとか…

Page 24: 30億のデバイスで走るjavaを支えるjavaエコシステム

Central Sync Requirement覚えた?

Page 26: 30億のデバイスで走るjavaを支えるjavaエコシステム

ご静聴ありがとうございました。