Posts Tagged ‘JetBrains’
[KotlinConf2017] Opening Keynote
Lecturer
The Opening Keynote of KotlinConf 2017 features Maxim Shafirov, Andrey Breslav, Dmitry Jemerov, and Stephanie Cuthbertson. Maxim Shafirov, CEO of JetBrains, has led the company’s efforts in developing innovative developer tools, including IntelliJ IDEA and Kotlin. Andrey Breslav, Kotlin’s lead designer, brings a deep understanding of language design, focusing on pragmatic solutions for JVM developers. Dmitry Jemerov, a senior developer at JetBrains, contributes technical expertise to Kotlin’s development. Stephanie Cuthbertson, involved with Android’s adoption of Kotlin, offers insights into its mobile ecosystem impact. Their collective leadership has driven Kotlin’s growth as a modern programming language.
Abstract
The Opening Keynote of KotlinConf 2017, delivered in San Francisco from November 1–3, 2017, set the tone for the inaugural Kotlin conference. This article examines the keynote’s exploration of Kotlin’s rapid rise, its strategic vision, and its impact on the developer community. Led by JetBrains’ leadership, the keynote highlighted Kotlin’s adoption in Android, its multiplatform ambitions, and the collaborative efforts driving its ecosystem. The analysis delves into the context of Kotlin’s emergence, the technical and community-driven advancements presented, and the implications for its future in software development.
Context of Kotlin’s Emergence
KotlinConf 2017 marked a significant milestone as the first conference dedicated to Kotlin, a language developed by JetBrains to enhance Java’s capabilities while ensuring seamless JVM interoperability. Held in San Francisco, the event attracted 1,200 attendees and sold out, reflecting Kotlin’s growing popularity. The keynote, led by Maxim Shafirov, emphasized the language’s recent endorsement by Google as a first-class language for Android development, a pivotal moment that accelerated its adoption. With 150 talk submissions from 110 speakers, the conference required an additional track, underscoring the community’s enthusiasm and the language’s broad appeal.
The keynote contextualized Kotlin’s rise within the evolving landscape of software development, where developers sought modern, concise languages to address Java’s verbosity and complexity. Maxim and Andrey highlighted Kotlin’s design philosophy, focusing on readability, type safety, and ease of adoption. The event’s organization, supported by Trifork and a program committee, ensured a diverse range of topics, from Android development to server-side applications, reflecting Kotlin’s versatility and the community’s collaborative spirit.
Technical Advancements and Multiplatform Vision
Andrey Breslav’s segment of the keynote outlined Kotlin’s technical strengths and future directions, particularly its multiplatform capabilities. Kotlin’s ability to simplify functional programming and reduce boilerplate code was a key focus, with the compiler handling complex type inference to enhance developer productivity. The keynote introduced plans for common native libraries, enabling shared code for I/O, networking, and serialization across platforms like iOS and Android. This multiplatform vision aimed to unify development workflows, reducing fragmentation and enabling developers to write platform-agnostic code.
The keynote also addressed Kotlin’s experimental features, such as coroutines, which were in active development. Andrey emphasized backward compatibility, ensuring that even experimental features would remain stable in production environments. This commitment to reliability, coupled with tools to facilitate migration to finalized designs, reassured developers of Kotlin’s suitability for enterprise applications. The technical advancements presented underscored Kotlin’s potential to bridge diverse development ecosystems, from mobile to native platforms.
Community Engagement and Ecosystem Growth
The keynote highlighted the pivotal role of the Kotlin community in driving the language’s success. Maxim and Dmitry acknowledged the contributions of partners like Gradle and Spring, which enhanced Kotlin’s interoperability with existing tools. The conference provided platforms for engagement, including office hours for bug reporting and voting mechanisms to gather feedback. These initiatives empowered developers to influence Kotlin’s evolution, fostering a sense of ownership within the community.
The keynote also celebrated the social aspects of KotlinConf, with events like the keynote party featuring live music and networking opportunities. These gatherings strengthened community ties, encouraging collaboration among developers, startups, and Fortune 500 companies adopting Kotlin. The emphasis on community-driven growth highlighted Kotlin’s role as a collaborative project, with JetBrains actively seeking feedback to refine features and address pain points, ensuring the language’s relevance and adaptability.
Implications for Software Development
KotlinConf 2017’s keynote underscored Kotlin’s transformative potential in software development. Its adoption by 17% of Android projects at the time signaled its growing influence in mobile development, where it simplified tasks like UI design and asynchronous programming. The multiplatform vision promised to extend these benefits to iOS and other platforms, reducing development complexity and fostering code reuse. For enterprises, Kotlin’s production-readiness and support for high-quality codebases offered a compelling alternative to Java.
The keynote’s focus on community engagement set a precedent for inclusive development, encouraging contributions from diverse stakeholders. The promise of recorded sessions ensured global accessibility, amplifying the conference’s impact. For the industry, KotlinConf 2017 highlighted the shift toward modern languages that prioritize developer experience, positioning Kotlin as a leader in this transition. The keynote’s strategic vision laid the groundwork for Kotlin’s continued growth, influencing both individual developers and large-scale projects.
Conclusion
The Opening Keynote of KotlinConf 2017 encapsulated the excitement and ambition surrounding Kotlin’s rise as a modern programming language. By highlighting its technical strengths, multiplatform potential, and vibrant community, Maxim, Andrey, Dmitry, and Stephanie positioned Kotlin as a transformative force in software development. The keynote’s emphasis on collaboration, innovation, and developer empowerment underscored Kotlin’s role in shaping the future of programming. As JetBrains continues to evolve Kotlin, the insights from KotlinConf 2017 remain a cornerstone of its journey, inspiring developers to embrace its capabilities.
Links
[KotlinConf2017] Highlights
Lecturer
The KotlinConf 2017 Highlights presentation features contributions from multiple speakers, including Maxim Shafirov, Andrey Breslav, Dmitry Jemerov, and Stephanie Cuthbertson. Maxim Shafirov serves as the CEO of JetBrains, the company behind Kotlin’s development, with a extensive background in software tools and IDEs. Andrey Breslav, the lead designer of Kotlin, has been instrumental in shaping the language’s pragmatic approach to JVM-based development. Dmitry Jemerov, a senior developer at JetBrains, contributes to Kotlin’s technical advancements. Stephanie Cuthbertson, associated with Android’s adoption of Kotlin, brings expertise in mobile development ecosystems. Their collective efforts underscore JetBrains’ commitment to fostering innovative programming solutions.
Abstract
The inaugural KotlinConf 2017, held in San Francisco from November 1–3, 2017, marked a significant milestone for the Kotlin programming language, celebrating its rapid adoption and community growth. This article analyzes the key themes presented in the conference highlights, emphasizing Kotlin’s rise as a modern, production-ready language for Android and beyond. It explores the context of Kotlin’s adoption, the community’s enthusiasm, and the strategic vision for its future, driven by JetBrains and supported by industry partners. The implications of Kotlin’s growing ecosystem, from startups to Fortune 500 companies, are examined, highlighting its role in enhancing developer productivity and code quality.
Context of KotlinConf 2017
KotlinConf 2017 emerged as the first dedicated conference for Kotlin, a language developed by JetBrains to address Java’s limitations while maintaining strong interoperability with the JVM. The event, which sold out with 1,200 attendees, reflected Kotlin’s surging popularity, particularly after Google’s announcement of first-class support for Kotlin on Android earlier that year. The conference featured over 150 talk submissions from 110 speakers, necessitating an additional track to accommodate the demand. This context underscores Kotlin’s appeal as a concise, readable, and modern language, appealing to developers across mobile, server-side, and functional programming domains.
The enthusiasm at KotlinConf was palpable, with Maxim noting the vibrant community discussions and the colorful atmosphere of the event’s social gatherings. The involvement of partners like Trifork and the presence of a program committee ensured a high-quality selection of talks, fostering a collaborative environment. Kotlin’s adoption by 17% of Android projects at the time, coupled with its use in both startups and Fortune 500 companies, highlighted its versatility and production-readiness, setting the stage for the conference’s focus on innovation and community-driven growth.
Community and Ecosystem Growth
A key theme of KotlinConf 2017 was the rapid expansion of Kotlin’s community and ecosystem. The conference showcased the language’s appeal to developers seeking a modern alternative to Java. Speakers emphasized Kotlin’s readability and ease of onboarding, which allowed teams to adopt it swiftly. The compiler’s ability to handle complex type inference and error checking was highlighted as a significant advantage, enabling developers to focus on business logic rather than boilerplate code. This focus on developer experience resonated with attendees, many of whom were already coding in Kotlin or exploring its potential for Android and server-side applications.
The event also highlighted the community’s role in driving Kotlin’s evolution. Discussions with contributors from Gradle, Spring, and other technologies underscored collaborative efforts to enhance Kotlin’s interoperability and tooling. The conference’s success, with its diverse speaker lineup and vibrant social events, fostered a sense of shared purpose, encouraging developers to contribute to Kotlin’s open-source ecosystem. This community-driven approach was pivotal in positioning Kotlin as a language that balances innovation with practicality, appealing to both individual developers and large organizations.
Strategic Vision for Kotlin
The keynote speakers outlined a forward-looking vision for Kotlin, emphasizing its potential to unify development across platforms. Maxim and Andrey highlighted plans to expand Kotlin’s multiplatform capabilities, particularly for native and iOS development, through initiatives like common native technology previews. These efforts aimed to provide shared libraries for I/O, networking, and serialization, enabling developers to write platform-agnostic code. The focus on backward compatibility, even for experimental features, reassured developers of Kotlin’s stability, encouraging adoption in production environments.
The conference also addressed practical challenges, such as bug reporting and session accessibility. The provision of office hours and voting mechanisms ensured attendee feedback could shape Kotlin’s future. The acknowledgment of minor issues, like an iOS app bug, demonstrated JetBrains’ commitment to transparency and iterative improvement. This strategic vision, combining technical innovation with community engagement, positioned Kotlin as a language poised for long-term growth and influence in the software development landscape.
Implications for Developers and Industry
KotlinConf 2017 underscored Kotlin’s transformative impact on software development. Its adoption by major companies and startups alike highlighted its ability to deliver high-quality, maintainable code. The conference’s emphasis on Android integration reflected Kotlin’s role in simplifying mobile development, reducing complexity in areas like UI design and asynchronous programming. Beyond Android, Kotlin’s applicability to server-side and functional programming broadened its appeal, offering a versatile tool for diverse use cases.
For developers, KotlinConf provided a platform to learn from industry leaders and share best practices, fostering a collaborative ecosystem. The promise of recorded sessions ensured accessibility, extending the conference’s reach to a global audience. For the industry, Kotlin’s growth signaled a shift toward modern, developer-friendly languages, challenging Java’s dominance while leveraging its ecosystem. The conference’s success set a precedent for future events, reinforcing Kotlin’s role as a catalyst for innovation in software engineering.
Conclusion
KotlinConf 2017 marked a pivotal moment for Kotlin, celebrating its rapid adoption and vibrant community. By showcasing its technical strengths, community-driven growth, and strategic vision, the conference positioned Kotlin as a leading language for modern development. The emphasis on readability, interoperability, and multiplatform potential highlighted Kotlin’s ability to address diverse programming needs. As JetBrains and its community continue to innovate, KotlinConf 2017 remains a landmark event, demonstrating the language’s transformative potential and setting the stage for its enduring impact.
Links
[DevoxxFR2015] Harnessing Java 8: Building Real-Time Applications
Trisha Gee, a Java Champion and Developer Advocate at JetBrains, showcased the power of Java 8 at Devoxx France 2015 by live-coding a real-time dashboard application. With extensive experience in high-performance Java systems, Trisha demonstrated how streams, lambdas, and the new date/time API can create robust, end-to-end applications using core Java libraries.
Crafting a Real-Time Dashboard
Trisha kicked off by building a JavaFX-based dashboard that consumed a high-velocity data feed, simulating Twitter sentiment analysis. She leveraged Java 8 streams to process collections efficiently, transforming raw data into meaningful insights. Lambdas simplified code, replacing verbose loops with concise expressions. Her demo highlighted real-time updates, with the dashboard dynamically rendering mood data.
This approach, Trisha emphasized, showcases Java 8’s expressiveness.
Streamlining Data Manipulation
Using streams, Trisha demonstrated filtering and aggregating data to display sentiment trends. The joining collector automatically formatted outputs, eliminating manual string manipulation. She also touched on the new date/time API, ensuring precise temporal handling. Despite a glitch requiring a restart, the dashboard successfully visualized real-time Twitter data, proving Java 8’s suitability for dynamic applications.
Her live coding, Trisha noted, demystifies complex features.
JavaFX for Modern UIs
Trisha integrated JavaFX to create a responsive UI, binding data to visual components. She contrasted fake and real mood services, showing how streams handle both seamlessly. Q&A was limited due to time, but she shared a comprehensive resource page, including WebSocket and JavaFX references, encouraging further exploration.
This session positions Java 8 as a versatile tool for modern development.
Links:
[DevoxxFR2014] 42 IntelliJ IDEA Tips and Tricks in 45 Minutes – A Thorough Examination of Productivity Boosters
Lecturer
Hadi Hariri has built a distinguished career as a Technical Evangelist at JetBrains, where he promotes IntelliJ IDEA and other development tools through presentations, podcasts, and community engagement. With extensive experience in software architecture and web development, he has authored numerous articles and books while contributing to open-source projects. Based in Spain, Hadi balances his professional life with family responsibilities, including raising three sons, and maintains interests in Tennis and technology evangelism.
Abstract
IntelliJ IDEA represents a pinnacle of integrated development environments, offering an extensive array of features designed to enhance developer productivity across the entire software lifecycle. This presentation delivers a fast-paced overview of 42 essential tips and tricks, though in reality incorporating over 100 individual techniques, each carefully selected to address specific challenges in code navigation, completion, refactoring, debugging, and version control. The article provides a detailed analysis of these features, explaining their implementation mechanics, practical applications, and impact on workflow efficiency. Through live demonstrations and step-by-step breakdowns, it shows how mastering these tools can transform daily development tasks from tedious obligations into streamlined processes, ultimately leading to higher quality code and faster delivery.
Navigation Mastery: Moving Through Code with Precision and Speed
Efficient navigation forms the foundation of productive development in IntelliJ IDEA, allowing users to traverse large codebases with minimal cognitive effort. The Recent Files dialog, accessed via Ctrl+E on Windows or Cmd+E on Mac, presents a chronological list of edited files, enabling quick context switching without manual searching. This feature proves particularly valuable in multi-module projects where related files span different directories, as it preserves mental flow during iterative development cycles.
The Navigate to Class command, triggered by Ctrl+N, allows instant location of any class by typing its name with support for camel-case abbreviation, such as “SC” for StringCalculator. This extends to symbols through Ctrl+Alt+Shift+N, encompassing methods, fields, and variables across the project. These capabilities rely on IntelliJ’s sophisticated indexing system, which builds comprehensive symbol tables upon project load, delivering sub-second search results even in repositories exceeding a million lines of code.
The Structure view, opened with Alt+7, offers a hierarchical outline of the current file’s elements, including methods, fields, and nested classes, with incremental search for rapid location. When combined with the File Structure Popup via Ctrl+F12, developers can navigate complex files without diverting attention from the editor window, maintaining focus during intensive coding sessions.
Code Completion and Generation: Intelligent Assistance for Faster Coding
IntelliJ’s completion system transcends basic auto-suggest by incorporating contextual awareness and type inference to propose relevant options. Basic completion, invoked with Ctrl+Space, suggests identifiers based on scope and visibility, while smart completion via Ctrl+Shift+Space filters to match expected types, preventing invalid assignments and reducing debugging time.
Postfix completion introduces a novel way to wrap expressions with common constructs; for instance, typing “.not” after a boolean generates negation logic, while “.for” creates an iteration loop over collections. This feature streamlines frequent patterns, such as null checks with “.nn” or type casting with “.cast”, integrating seamlessly with the editor’s flow.
Live templates automate repetitive structures; the built-in “sout” expands to System.out.println(), while custom templates can generate complete test methods with annotations and assertions. Hadi demonstrates creating a JUnit template that includes setup code, triggered by a user-defined abbreviation for instant productivity gains.
The generate-from-usage feature, activated with Alt+Enter on undefined elements, creates missing methods, fields, or classes on demand. This supports an intentional coding style where developers first express usage intent, then implement details, aligning perfectly with test-driven development methodologies.
Refactoring Tools: Safe Code Transformation at Scale
Refactoring in IntelliJ maintains program semantics while restructuring code for improved readability and maintainability. The rename refactoring, via Shift+F6, updates all references including comments and string literals when enabled, handling scope conflicts intelligently. Extract method (Ctrl+Alt+M) creates functions from selected code blocks, automatically determining parameters and return types based on usage analysis.
Inline refactoring (Ctrl+Alt+N) reverses extractions, useful for simplifying overly fragmented code while preserving behavior. Change signature (Ctrl+F6) modifies method parameters with propagation to callers, inserting default values for new parameters to avoid compilation errors.
Surround with (Ctrl+Alt+T) wraps selected code in control structures like try-catch or if-else, with template support for custom patterns. These tools collectively enable large-scale code reorganization without manual error-prone adjustments.
Debugging Capabilities: Deep Insight into Runtime Behavior
The debugger provides sophisticated inspection beyond basic stepping. Smart step into (Shift+F7) allows selective entry into chained method calls, focusing on relevant code paths. Evaluate expression (Alt+F8) executes arbitrary code in the current frame, supporting complex debugging scenarios like modifying variables mid-execution.
Drop frame rewinds the call stack, re-executing methods without full restart, ideal for iterative testing of logic branches. Conditional breakpoints pause only when expressions evaluate true, filtering irrelevant iterations in loops.
Lambda debugging treats expressions as methods with full variable inspection and stepping. Custom renderers format complex objects, like displaying collections as comma-separated lists.
Version Control Integration: Streamlined Collaboration
Git support includes visual diffs (Ctrl+D) for conflict resolution, branch management through intuitive dialogs, and cherry-picking from commit histories. The changes view lists modified files with diff previews; annotate shows per-line authorship and revisions.
Interactive rebase through the VCS menu simplifies history cleaning by squashing or reordering commits. Pull request workflows integrate with GitHub, displaying comments directly in the editor for contextual review.
Plugin Ecosystem: Extending Functionality
Plugins like Lombok automate boilerplate with annotations, while Key Promoter X teaches shortcuts through notifications. SonarLint integrates code quality checks, flagging issues in real-time.
Custom plugin development uses Java with SDK support for editor extensions and custom tools.
Advanced Configuration for Optimal Performance
Running on Java 8+ (edit info.plist) improves font rendering. The productivity guide tracks feature usage, helping discover underutilized tools.
Conclusion: IntelliJ as Productivity Multiplier
These techniques collectively transform IntelliJ into an indispensable tool that accelerates development while improving code quality. Consistent application leads to substantial time savings and better software outcomes.
Links:
[DevoxxBE2013] The Unpuzzling Kotlin: Bringing Clarity to Your Code
Svetlana Isakova and Aleksei Sedunov, core Kotlin developers at JetBrains, dissect Java’s perplexing behaviors through Kotlin’s lens, affirming its mission for safer, concise JVM code. Svetlana, a language architect and Scala educator, pairs with Aleksei, IDE tooling specialist and Kotlin In-Depth author, to translate infamous Java Puzzlers—exposing casting pitfalls, expression ambiguities, and exception quirks—into Kotlin equivalents that eliminate obscurity.
Kotlin, they assert, rectifies Java’s design flaws via smart casts, safe calls, and extension functions, fostering intuitive industrial programming. Their analysis, rooted in real-world fixes, invites scrutiny at JetBrains’ booth.
Expressions and Control Structures
Svetlana contrasts Java’s operator precedence puzzles with Kotlin’s explicit parentheses, averting silent errors. She demos a chained assignment mishap, resolved in Kotlin by immutable vals.
Aleksei explores null safety: Kotlin’s ?. safe calls and !! assertions prevent NPEs, unlike Java’s unchecked casts.
Exception Handling and Resource Management
Java’s checked exceptions burden APIs, Aleksei notes; Kotlin’s unchecked model simplifies signatures. He illustrates try-with-resources emulation via use extensions, ensuring cleanup.
Svetlana highlights Elvis operator (?:) for concise defaults, streamlining null propagation absent in Java.
Objects, Classes, and Nullability
Kotlin’s data classes auto-generate equals/hashCode, eclipsing Java’s boilerplate. Aleksei demos sealed classes for exhaustive when branches, enhancing pattern matching.
Svetlana unveils nullable types: platform types from Java interop demand explicit handling, with smart casts post-checks yielding type safety.
Extensions and Practical Wisdom
Extensions augment classes without inheritance, Aleksei shows, adding string utilities seamlessly. He addresses puzzler avoidance: Kotlin’s design sidesteps most Java gotchas, though vigilance persists.
Svetlana fields queries on closures and extensions, affirming Kotlin’s simplicity for Java migrants.
Links:
[DevoxxBE2012] Putting Kotlin to the Test
During DevoxxBE2012, Hadi Hariri, a developer and technical evangelist at JetBrains, presented an in-depth evaluation of Kotlin, a then-emerging programming language designed by his company. Hadi, with his background in software architecture and web development, aimed to assess whether Kotlin could address common pitfalls in existing languages while serving as a versatile tool for various development needs. He began by providing context on Kotlin’s origins, noting its static typing, object-oriented nature, and targets for JVM bytecode and JavaScript compilation. Licensed under Apache 2.0, it was at milestone M3, with expectations for further releases leading to beta.
Hadi explained the motivation behind Kotlin: after years of building IDEs in Java, JetBrains sought a more efficient alternative without the complexities of languages like Scala. He highlighted Kotlin’s focus on practicality, aiming to reduce boilerplate and enhance productivity. Through live coding, Hadi demonstrated building a real-world application, showcasing how Kotlin simplifies syntax and integrates seamlessly with Java.
One key aspect was Kotlin’s concise class definitions, where properties and constructors merge into a single line, eliminating redundant getters and setters. Hadi illustrated this with examples, contrasting it with verbose Java equivalents. He also touched on null safety, where the language enforces checks to prevent null pointer exceptions, a frequent issue in other systems.
As the session progressed, Hadi explored functional programming elements, such as higher-order functions and lambdas, which allow for expressive code without excessive ceremony. He built components of an application, like data models and services, to test interoperability and performance.
Syntax Innovations and Productivity Gains
Hadi delved into Kotlin’s syntax, emphasizing features like extension functions that add methods to existing classes without inheritance. This promotes cleaner code and reusability. He showed how to extend standard library classes, making operations more intuitive.
Data classes were another highlight, automatically providing equals, hashCode, and toString methods, ideal for immutable objects. Hadi used these in his demo app to handle entities efficiently.
Pattern matching via ‘when’ expressions offered a more powerful alternative to switch statements, supporting complex conditions. Hadi integrated this into control flows, demonstrating reduced branching logic.
Smart casts automatically handle type checks, minimizing explicit casts. In his application, this streamlined interactions with mixed-type collections.
Interoperability and Platform Targets
A core strength, as Hadi pointed out, is Kotlin’s full compatibility with Java. Code can call Java libraries directly, and vice versa, facilitating gradual adoption. He compiled mixed projects, showing no performance overhead.
Targeting JavaScript, Kotlin compiles to efficient code for web fronts, sharing logic between server and client. Hadi previewed this, noting potential for unified development stacks.
He addressed modules and versioning, still in progress, but promising better organization than Java packages.
Functional and Advanced Constructs
Hadi introduced traits, similar to interfaces but with implementations, enabling mixin-like behavior. He used them to compose behaviors in his app.
Delegated properties handled lazy initialization and observables, useful for UI bindings or caching.
Coroutines, though nascent, hinted at simplified asynchronous programming.
In Q&A, Hadi clarified comparisons to Ceylon and Scala, noting Kotlin’s balance of comprehensibility and power. He discussed potential .NET targeting, driven by demand.
Real-World Application Demo
Throughout, Hadi built a sample app, testing features in context. He covered error handling, collections, and concurrency, proving Kotlin’s robustness.
He encouraged trying Kotlin via IntelliJ’s community edition, which supports it natively.
Hadi’s presentation positioned Kotlin as a promising contender, fixing expensive language flaws while maintaining industrial applicability.