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
Building Developer Tools with Kotlin
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Breandan Considine
April 19, 2017
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Building Developer Tools with Kotlin
Breandan Considine
April 19, 2017
More Decks by Breandan Considine
See All by Breandan Considine
Intrinsic social motivation via causal influence in multi-agent RL
breandan
0
180
Deep, Skinny Neural Networks are not Universal Approximators
breandan
0
160
PRM-RL: Long-range Robotic Navigation Tasks by Combining Reinforcement Learning and Sampling-based Planning
breandan
0
190
DeepTest: Automated Testing of Deep-Neural-Network-driven Autonomous Cars
breandan
0
150
Idiolect: A Reconfigurable Voice Coding Assisant
breandan
0
260
Interactive Programming with Automated Reasoning
breandan
0
100
Learning Structural Edits via Incremental Tree Transformations
breandan
0
77
Thinking Like Transformers
breandan
0
120
Discriminative Embeddings of Latent Variable Models for Structured Data
breandan
0
87
Other Decks in Programming
See All in Programming
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
260
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
580
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
Vite+ Unified Toolchain for the Web
naokihaba
0
310
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
AIで効率化できた業務・日常
ochtum
0
140
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
AI 輔助遺留系統現代化的經驗分享
jame2408
1
140
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
190
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
650
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
5.6k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
From π to Pie charts
rasagy
0
210
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
The Cost Of JavaScript in 2023
addyosmani
55
10k
Leo the Paperboy
mayatellez
7
1.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Paper Plane
katiecoart
PRO
1
51k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Transcript
Building Developer Tools with Kotlin and Gradle Breandan Considine GIDS
2017
Why develop tools? • Syntax manipulation • Typing completions •
Static code analysis • UI/UX components • Language support • Framework support
Why use Kotlin? • IntelliJ Platform / Eclipse integration •
Java language / JVM interoperability • Functional programming patterns • Simplifies framework interactions • Domain specific languages • Build tools integration
Why use Gradle? • Comprehensive tooling support • Cross-platform IDE
• Gradle tooling API • Language-native buildscripts • Vibrant plugin ecosystem • Gradlew is awesome!
public class Singleton { private Singleton() {} private static instance;
public static Singleton getInstance() { if(instance == null) instance = new Singleton(); return instance; } public void doSomething() {} } 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Singleton pattern: Java
Singleton.doSomething() Singleton pattern: Java Singleton.getInstance().doSomething();
Singleton.doSomething() object Singleton { fun doSomething() {} } Singleton pattern:
Kotlin 1: 2: 3: Lazy Initialization
public class Singleton { private Singleton() {} private static instance;
public static Singleton getInstance() { if(instance == null) instance = new Singleton(); return instance; } public void doSomething() {} } 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Singleton pattern: Java
IntelliJ Platform SDK ActionManager.getInstance() .getAction("MyAction")… MyAction…
Kotlin Extensions fun String.print(string: String) { println(string) } "hello".print()
IntelliJ Platform Kotlin DSL 1: val panel = panel {
2: noteRow("Login:") 3: row("Username:") { userField() } 4: row("Password:") { passwordField() } 5: row { 6: rememberCheckBox() 7: right { 8: link("Forgot?") { browse(forgot) } 9: } 10: } 11: noteRow("No account? $signupLink") 12: }
Gradle Script Kotlin (GSK) buildscript { repositories { gradleScriptKotlin() }
dependencies { classpath(kotlinModule("gradle-plugin")) } }