Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Javaのバージョニング問題の話しよっか
Search
RyotaMurohoshi
January 21, 2016
Technology
0
25
Javaのバージョニング問題の話しよっか
2016/01/21(木)に行われた第1回ゆるゆる高専エンジニアLT大会 at FULLER
の発表資料です。
RyotaMurohoshi
January 21, 2016
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Tilemapのアップデートについて
ryotamurohoshi
0
46
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
550
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
740
Odin Validationはいいぞ!
ryotamurohoshi
2
1k
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.4k
Unityでも、新しいC#
ryotamurohoshi
0
1.4k
Riderはいいぞ!
ryotamurohoshi
1
3.6k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.5k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
38k
Other Decks in Technology
See All in Technology
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
140
MCP ✖️ Apps SDKを触ってみた
hisuzuya
0
370
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
450
AI時代の開発を加速する組織づくり - ブログでは書けなかったリアル
hiro8ma
1
310
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
360
Building a cloud native business on open source
lizrice
0
180
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
380
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
140
頭部ふわふわ浄酔器
uyupun
0
110
OCIjp_Oracle AI World_Recap
shinpy
1
180
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
300
Dify on AWS 環境構築手順
yosse95ai
0
130
Featured
See All Featured
Designing for Performance
lara
610
69k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Scaling GitHub
holman
463
140k
A Modern Web Designer's Workflow
chriscoyier
697
190k
How to Ace a Technical Interview
jacobian
280
24k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
For a Future-Friendly Web
brad_frost
180
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Fireside Chat
paigeccino
41
3.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
Javaͷόʔδϣχϯά ͷ͠Α͔ͬ ྄ࣨଠ 2016/01/21()(ୈ1ճ(ΏΔΏΔߴઐΤϯδχΞLTେձ(at(FULLER
ಥવͰ͕͢Ͱ͢
͜ͷΫϥεΛؚΉϥΠϒϥϦ͕͋Γ·͢(core_v1.jar) package com.mrstar.versioning_problem.core; public final class Core { private Core()
{} public static String getTitle() { return "΄͛;͕"; } public final static String MESSAGE = "ͽΑͽΑʂ"; }
͖ͬ͞ͷϥΠϒϥϦʹґଘ͢ΔϥΠϒϥϦ͕͋Γ·͢(framework.jar) package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
None
͜Μͳײ͡Ͱ͍·͢ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); Framework.showMessage(); } }
࣮ߦ͢Δͱɽɽɽ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); // ʮ΄͛;͕ʯͬͯදࣔ͞ΕΔ Framework.showMessage(); // ʮͽΑͽΑʂʯͬͯදࣔ͞ΕΔ } }
͔ͬ͜Β͕ϙΠϯτͰ͢ ͏ͪΐͬͱঢ়گઆ໌͕ଓ͖·͢
ԾͷจݴΛຊ൪༻ʹมߋ͠ɺόʔδϣϯΞοϓʢcore_v2.jarʣ package com.mrstar.versioning_problem.core; public final class Core { private Core()
{} public static String getTitle() { return "ϝΠϯϖʔδ"; //ɹ͖ͬ͞·Ͱʮ΄͛;͕ʯ } // ͖ͬ͞·ͰʮͽΑͽΑʂʯ public final static String MESSAGE = "͜Μʹͪʂ"; }
None
core_v2.jarʹஔ͖͑ͯɺframework.jarͦͷ··Ͱ package com.mrstar; import com.mrstar.versioning_problem.framework.Framework; public class Main { public
static void main(String[] args) { Framework.showTitle(); // Q1 ͳΜͯදࣔ͞ΕΔʁ Framework.showMessage(); // Q2 ͳΜͯදࣔ͞ΕΔʁ } }
Q1#ʮFramework.showTitle();ʯ • ʮ΄͛;͕ʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ • ʮϝΠϯϖʔδʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ
Q2#ʮFramework.showMessage();ʯ • ʮͽΑͽΑʂʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ • ʮ͜Μʹͪʂʯͬͯදࣔ͞ΕΔͱࢥ͏ਓʁ
͑߹Θͤʂ
Q1#Framework.showTitle() ʮϝΠϯϖʔδʯͬͯදࣔ͞Ε·͢ ɹ Q2#Framework.showMessage() ʮͽΑͽΑʂʯͬͯදࣔ͞Ε·͢
͋ͬͯͨʁ
ղઆʂ
framework.jarͷFramework.java(࠶ܝ) package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
͜ΕΛίϯύΠϧͨ݁͠Ռ͕ϙΠϯτʂ framework.jarͷதΛσίϯύΠϧ͢Δͱɽɽɽ
σίϯύΠϧͨ͠Framework.class package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ͽΑͽΑʂ"); } }
ؾ͍ͮͨʁ ͏ҰճΈͯΈ·͠ΐ͏ʂ
Framework.javaͷίʔυ package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework(){ } public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println(Core.MESSAGE); } }
σίϯύΠϧͨ͠Framework.class package com.mrstar.versioning_problem.framework; import com.mrstar.versioning_problem.core.Core; public class Framework { private
Framework() {} public static void showTitle() { System.out.println(Core.getTitle()); } public static void showMessage() { System.out.println("ͽΑͽΑʂ"); } }
͓Θ͔Γ͍͚ͨͩ·͔ͨ͠ʁ
σίϯύΠϧͨ͠.class Core.MESSAGEͷจࣈྻϦςϥϧͷʮͽΑͽΑʯ ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
Core.MESSAGEͷจࣈྻϦςϥϧɺ ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
public'sta+c'final'String'MESSAGE'(ུ) ຒΊࠐ·Ε͍ͯ·ͨ͠Ͷʂ
όʔδϣχϯάʂ ༻ޠࣗମC#ͷͷ
public'sta+c'final'intpublic'sta+c'final'String ΫϥεఆͷՕॴίϯύΠϧ͢Δͱ ɾจࣈྻϦςϥϧʹల։͞Ε·͢ʂ
framework.jar core_v1.jarʹґଘ͠Ϗϧυ͠·ͨ͠ ͦͷޙɺ࠶Ϗϧυ͠·ͤΜͰͨ͠Ͷ
framework.jarΛ࠶Ϗϧυ͢Δ·ͰɺFramewarkΫϥεͷ CoreΫϥεͷఆCore.MESSAGEΛ͍ͬͯΔՕॴ core_v1ͷʮͽΑͽΑʯͷ··Ͱ͢
૾͍ͯͩ͘͠͞ʂ ൛ͷϓϩάϥϜͰςετ༻ͷจݴ͕ग़͖ͯͯ͠·͏ͷΛʂ
((((ʀƅДƅ))))
·͊ͿͬͪΌ͚ ϐϤϐϤ ͱ͔ɺ͔Θ͍͍ΜͩΑͶ()
ʮ͜͜ʹࣹ৺ΛδϟϒδϟϒἤΔจݴʯ স͑ͳ͍Ͷ
ϙΠϯτ͓͞Β͍ public'sta+c'final'intΈ͍ͨͳఆ ίϯύΠϧ͢ΔͱϦςϥϧͱͯ͠ల։͞ΕΔ ※ϓϦϛςΟϒܕͱStringܕ
ʮframework.jar࠶Ϗϧυ͢ΓΌΑ͘Ͷʁʯ ·͊ͦ͏ͳΜ͚ͩͲɺJavaॻ͘ͳΒ͜Εͬͱ͍ͯ΄͍͠ ఆ͕ຒΊࠐ·ΕͯࢥΘ͵όάͷݪҼʹͳΔ͔Βʂ
͘ͳΓ·͕ͨࣗ͠ݾհ • ྄ࣨଠ • ࠷ॳJavaͰAndroid+(2016ͰJava6+orz) • ࠷ۙ·ͰC#ͰUnity+(2016ͰC#3.0(Ұ෦4.0)+orz) • ࠓTypeScriptͰNode.js+(JavaScriptΉ͍ͣͶ)
ʮόʔδϣχϯάɺكͳέʔεͳΜͰ͠ΐʁʯ
Θͨͦ͠͏ࢥ͍ͬͯͨ࣌ظ͕͋Γ·ͨ͠ɻ
ڈૺ۰͠·ͨ͠ Unity&+&Android&+&͋ΔࠂSDKͰ
·ͨ·ͨͰ͢ʂ ࠓAndroidܦݧऀ͕ର
AndroidͰpublic,sta0c,final,int ͳΑ͘͏ͭͬͯͳʙΜͩʂʁ
RΫϥε
R.layout.activity_mainͷΑ͏ͳϦιʔεID ϨΠΞτը૾ʹৼΒΕΔϦιʔεID(intͳఆ) RΫϥεͷύοέʔδ໊ΞϓϦͷύοέʔδ໊ʹ
RΫϥεͷϦιʔεIDར༻ྫ public class MainActivity extends Activity { @Override protected void
onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ͜ΕʂʂʂϏϧυ͢ΔͱϦςϥϧʹ setContentView(R.layout.activity_main); } }
Unity&+&Android&+&͋ΔࠂSDKͰ όʔδϣχϯά͕ݪҼͷෆ۩߹ʹૺ۰ʂ
Unity+Android+͋ΔࠂSDKͷߏྫ ͜ΕUnity4·ͰͷΓํͰݱࡏඇਪ
None
ϨΠΞτͷXMLը૾ͳͲͷϦιʔε ্هϦιʔεΛ͏ࠂදࣔػೳͷjar (AndroidManifest.xml)
jarͷதͷΫϥεͰɺR.layout.activity_main Έ͍ͨͳϦιʔεIDͷఆɺϦςϥϧͱͯ͠ల։͞ΕͯΔΑͶʂ
UnityϏϧυ࣌ɺAndroidͷΞϓϦΛ࡞ΔͨΊ ৽ͨʹAndroidϓϩδΣΫτΛ࡞ͬͯ ͜ͷλΠϛϯάͰϦιʔεʹ࠶ϦιʔεID͕ৼΒΕ·͢
None
jarͷதͷΫϥεͰɺR.layout.activity_main Έ͍ͨͳϦιʔεIDͷఆɺϦςϥϧͱͯ͠ల։͞ΕͯΔΑͶʂ
͠
ϓϥάΠϯ͕ೋͭʹͳͬͨΒ
None
ϓϥάΠϯ͕ೋͭʹͳͬͨΒ
͜ͷঢ়ଶͰAndroidϓϩδΣΫτΛ࡞Γ ϦιʔεIDΛৼΓͨ͠Β
ϓϥάΠϯͷJarͷதͷϦςϥϧͱ Unity͕৽ͨʹ࡞ΔϦιʔεIDͷ͕ ͣΕΔʂ
࣮ߦ࣌Τϥʔʂ
λν͕ѱ͍
public'sta+c'final'int͕ϕλॻ͖͞Εͨ jarΛ࡞ͬͨSDK։ൃऀ͕ѱ͍ʂ jarͷதͷϦιʔεIDͱUnity͕࡞ΔAndroidϓϩδΣΫτͷϦιʔεIDͱ͕Ұக͠ͳ͍ʂ
࠷ѱɺඇৗʹΪϧςΟ
ͯͯ͞͞ɺ όʔδϣχϯά ཧղͯ͠Β͑·͔ͨ͠ʁ
ΈΜͳόʔδϣχϯάΛ Ҿ͖ىͦ͜͠͏ͳϥΠϒϥϦ ࡞ͬͪΌ͍͚·ͤΜΑʂ
ଋͳʂ
Javaͷόʔδϣχϯάͷ͠Α͔ͬ ɹ ྄ࣨଠ 2016/01/21()(ୈ1ճ(ΏΔΏΔߴઐΤϯδχΞLTେձ(at(FULLER