JCConf 2024
-
總部位於日本的LINE以「拉近你我的距離」為企業使命,透過多元的行動服務與內容,致力將人們、資訊與社會緊密連結。自2011年6月以通訊軟體的型態推出,現更推展其多元的全球生態系,並將觸角延伸至人工智慧、金融科技等領域,積極實現「智慧入口」的願景,2021年3月,LINE與日本規模最大的網路科技集團之一Z Holdings 正式整併,未來也將持續提供用戶享有最即時、便利的行動生活。欲瞭解更多資訊,請瀏覽官方網站:http://linecorp.com/zh-hant/
Java 21 was released in September 2023 and Java 25 is due in September 2025, so we are just in between these two important releases. This is a very good time to look at what was released in the JDK 21, and what is currently been developed, and could be released in 25. Structured Concurrency is almost there, Data Oriented Programming is taking shape, so we now have a good idea of what it will bring for us, developers.
This presentation covers four of the projects currently been developed by the OpenJDK. First, we will take a quick look at Panama, that released the Foreign Function and Memory API and Valhalla and that is still developing value types and non-nullable types, as well as the Vector API. Then, we will spend some time on Loom, that delivered Virtual Threads, and is still developing Structured Concurrency, to understand why you will need this feature once they are made final. And lastly, we will present Amber, how it implements the Data Oriented Programming paradigm to the Java platform, and how you can leverage this programming model to write better applications, organized in a better way and easier to maintain.
-
-
2024 年的 Java 22 和 23 延續了之前版本的功能,正式提供了匿名變數與模式、外部函式與記憶體存取 API,並且也新增了有趣的 Markdown 文件註解和直接執行跨檔案的源碼程式等功能。同時,持續孵化中的項目有彈性的建構函式、字串模板、向量處理、串流收集器、隱式宣告類別和實例主方法、基本型別的模式匹配,以及模組 import 宣告等功能。本場演講將與大家分享這兩個版本所帶來的 Java 最新變化。
自 2016 Kotlin 發布 1.0 版後,迄今已過了 8 年,在每次的改版都會引入新功能以及優化,在眾多 Kotliner 的期盼下,今年( 2024 年)終於迎來了 2.0 版,在 2.0 版中,我們將迎來什麼重大的更新呢?
本次分享將介紹 Kotlin 的歷史、 Kotlin 的生態系以及 2.0 版帶來的新功能及 K2 Compiler 的介紹。
無論您是資深 Kotlin 開發者還是剛剛入門的新手,都能夠在本場分享中,獲得最詳盡的 Kotlin 介紹及最新資訊,幫助您掌握 Kotlin 過去、現在以及未來。
隨著資安意識的提升,大部分具規模的甲方公司開始有更成熟的資安解決方案以及資安控管要求
本議題探討在現今前後端分離架構下,認證與授權流程的控管如何與甲方的流程串接
主要會著重在各種類外部SSO機制的串聯, 包括 LDAP, SAML, OIDC(OAuth2)
前端(如果有demo的話)會以Vue3為主
後端以SpringBoot3+Java23為主
-
Autopass 創立於台灣,以「車主的錢包」為初衷專注於出行金融支付整合。目前與全台超過 2,000 個出行場景合作,並以「⾞⿇吉」App累積超過百萬會員數。2023年將業務拓展至海外,目標讓全球車主都能享受到快速且便利的出行體驗。
In the world of functional programming, handling Input/Output (IO) is one of the most critical tasks. Pure functions and immutable data are all well and nice, but what should we do when we need to read from a database, send data over the network, or access local files?
In this talk, "Functional Programming IO Demystified: Understanding Partial Application, Monads, and Effects," we will explore these concepts using practical examples and live coding in Kotlin. Each strategy has its pros and cons, and I will illustrate them with examples from my experience working on large back-end code bases in functional Kotlin.
Key takeaways from this talk include:
A better grasp of how to design a functional programming solution for a backend.
Understanding advanced functional programming concepts, including the differences between the monadic approach and the direct-style effects approach.
Please join if you are interested or just curious about handling IO in functional programming and you will gain the knowledge to write clean, maintainable code in Kotlin as a bonus!
In this talk, Kim'd love to share how an problem solver start their problem framing process, through identifying key functional requirements, quality attributes, operation considerations and final design trade offs. Nowadays, problem solvers could leverage generate AI to boots up the journey, we may use Amazon Q Developer as one of the choice and benefit from its well tuned capabilities to dave daily life.
測試驅動開發(TDD)是現代軟體工程領域中廣為人知的開發方法。先撰寫測試個案描述實作功能的行為(紅燈),再用最少量的程式碼使其通過測試(綠燈),有助於建立更好的設計思維、提升程式碼可讀性和穩定度。
在 TDD 的過程中,開發人員常需要模擬或外部服務(例如金流或其它 API 串接),常會用到 Mock 與 Stub 的手法,這兩者雖有相似但焦點有些不同。
本講題將會介紹 TDD 的基本原則,例如哪些功能該測、哪些不用測也沒關係,包括 Mock 與 Stub 的應用,並使用測試框架 Kotest 為範例,實際展示如何在 Kotlin 專案中實踐 TDD 開發流程。
-
-
GraphQL 近年來在 API 開發中迅速崛起,帶來了比傳統 REST API 更靈活和高效的資料查詢方式。本次主題將介紹什麼是 GraphQL、如何在 Java 中使用 GraphQL 進行實現,並探討 DataLoader 的性能優化技術和 Schema Stitching 及 Federation 的應用,適合希望了解和應用 GraphQL 的 Java 開發者參加。
分享如何開始一個 Java 專案的經驗,包括技術選擇、共用程式與元件以及開發規範。希望這些內容能幫助大家更順利地進行專案開發。
了解如何應用LINE開源的符合OpenFeature規範的Toggle Client API SDK——Flagship4j,是如何通過Feature Toggle提升應用程式開發效率與佈署彈性,並降低上線風險。
簡單介紹JAV SPI(Service Provider Interface) 的用途與如何實現,並透過程式範例以開發遊戲為情境,以工程師的角度來看如何實作SPI機制,中間再以Keycloak自定義權限驗證流程為例,說明實戰中如何動態載入SPI與應用情境,以達成使用共通模組的情況下也能有自定義的彈性調整,最後總結SPI優點與缺點。
-
OpenRewrite 是一個強大的開源自動化重構平台,主要用於現代化和標準化處理 Java 及其他程式語言。提供了多種工具和規則,使開發者能夠系統性地改進程式庫的品質和可維護性。透過定義可重用的重構規則,OpenRewrite 能夠在整個應用程序或多個項目中執行廣泛的程式碼變更,包括格式化和依賴管理等任務。這些自動化的任務不僅降低了錯誤率,還提高了開發效率。此外,OpenRewrite 支持持續整合流程,可輕鬆融入現有的開發工具(如 Gradle 和 Maven),從而在開發的早期階段實現程式碼改進和標準化。
在微服務的架構下,使用者或是各服務間的權控也是相當重要的議題。
國泰世華銀行的海外消金上雲案,選擇了開源的 Keycloak (Identity and Access Management, IAM) 作為解決方案。
內容主要將講述 Keycloak Cluster 的運作原理,以及在 Kubernetes 環境上,需要如何設定才可以做到 Cluster 架構。
著重在 SonarQube,分享初學 SonarQube 的應用,如何使用 SonarQube CNES Report Plugin 匯出源碼掃描之報告,並結合 Intellij IDEA SonarAnalyzer plugins 在 IDEA 內部本地使用 SonarQube 同時進行源碼掃描與遠端同步產製報告
Java由於其廣泛使用和靈活性,成為許多企業的首選。然而,這也使得Java成為惡意攻擊的目標。為了有效保護系統,快速修補漏洞至關重要。本議程挑了幾個主要且常見的Java應用程式漏洞,並提供了相應的應對方法(結合spring boot)。
-
使用 Spring Boot + Spring AI 結合各種 AI 模型工具,快度打造 AI 應用
- Spring AI 介紹
- 建立 project(以下都是講解+實作)
- 基本 Chat 呼叫
- 產生圖檔天氣貓貓圖
- Embedding
- 向量資料庫
- 打造自己的知識機器人
-
一般在建構Event-Driven Architecture (EDA)的系統時,首先會聯想到大型的分散式系統設計,並需導入重量級的Message Broker( 例如Kafka或RabbitMQ )來完成。
但講者認為即便是單體式系統(或單一微服務內部),也能利用Event-Driven Design的思維建構出彈性及低耦合的良好架構,並且在需要擴展到分散式系統或微服務時,提供良好的無縫接軌 ,講者將分享如何利用Spring Event及Spring Modulith的特性來達成此目標。
本演講將介紹 Ktor 3.0 這個用 Kotlin 語言編寫的非同步 Web 應用框架。
首先,我們將簡要回顧 Ktor 的基本架構,包括路由、請求處理和插件機制。接著,重點介紹 3.0 版本的新特性,像是更好的協程支持、增強的安全性功能、最佳化的性能表現、以及新的開發者工具。
另外,還會通過實際展示如何快速建立一個簡單的 Web 應用,幫助聽眾快速上手 Ktor 3.0 框架。
OpenTelemtry是由Cloud Native Computing Foundation (CNCF)所定義的新的遠程監看標準,透過它,支持OpenTelemtry的系統可以監看到跨系統間的互動狀況,MySQL 8.1版以後開始支援OpenTelemetry,這讓我們不僅能看到MySQL本身的狀況,也能了解使用MySQL的應用系統和MySQL的互動.這個演講將為各位說明和演示如何設定MySQL的OpenTelemtry插件,支援OpenTelemtry的監看系統又如何能使用這個插件看到
As short-living applications such as event-driven applications like FaaS (function as a service) got popular, Java was not selected for building such applications due to its slow start-up time. However, situation has changed! Newly added features help Java applications start rapidly and run faster, and Java has been gradually selected in this area. In this session, we explore technologies that have been introduced before and will be introduced in the future and share real use cases and demos with you. You can learn Java can be an option for short-live applications' platform and change your recognition.
-
Taboola powers recommendations for the open web, helping people discover things they may like. The company's platform, powered by artificial intelligence, is used by digital properties, including websites, devices and mobile apps, to drive monetization and user engagement. Taboola has long-term partnerships with some of the top digital properties in the world, including CNBC, NBC News, Business Insider, The Independent and El Mundo. More than 15,000 advertisers use Taboola to reach over 500 million daily active users in a brand-safe environment. The company has offices in 22 cities worldwide, including New York and Tel Aviv.
Company website: https://www.taboola.com/zh-hant/
Taboola Taiwan Career page: https://www.taboola.com/careers/jobs#team=&location=18981
Kotlin 身為支援多平台開發的熱門語言,除了擁有良好的生態系統、成熟的開發工具外,也不斷探索支援更多平台的可能性。Kotlin/Wasm 專案將 Kotlin 語言與 WebAssembly 技術互相結合,讓開發者能夠開發安全、高效能、方便移植的 WebAssembly 應用程式。隨著 WebAssembly 的未來發展,Kotlin/Wasm 還能在瀏覽器之外執行,應用在更多實務情境裡。本場分享將介紹 Kotlin/Wasm 專案的最新發展,包括如何在現有專案內加入對 Kotlin/Wasm 的支援、相關開發工具及並展示以 Kotlin/Wasm 執行 Compose UI 程式碼,展現 Kotlin 多平台開發的魅力。
in-database analytics 是一種設計風格:「它將資料處理直接放進資料庫裡執行,因而可以省去資料在資料庫與後端程式之間的來回搬移。」然而,這個風格的程式設計並不常用。甚至有時候,工程師想來想去就是覺得這招最合用了,還覺得要這樣子設計有點怪怪的,好像前無古人一樣。
在這場演講我們會來探討:
1. 什麼是 in-database analytics?
2. 它有什麼好處。
3. 該怎麼應用這招,可以搭配什麼工具。
4. 如果不想用這招的話,還有什麼選項。
在現今快速變遷的軟體開發環境中,資料庫的版本控制與資料遷移愈發重要。本次分享主題內容包括Liquibase基本介紹;將Liquibase導入現有專案協助客戶資料庫版控的情境處理分享;協助開發人員使用套件如JPA Buddy與Liquibase MavenPlugin工具,自動化完成資料庫管理與部署。希望能藉由這次的分享讓與會者更好地理解和應用Liquibase,提升專案的資料庫管理效能。
在安排一系列步驟、跨系統整合任務的流程當中,如果完全透過手動撰寫程式及設定狀態移轉,會因為複雜的流程及其相應所需的額外處理機制,導致開發工作的負擔增加甚至容易出錯。
本次內容將介紹如何利用工作流引擎來簡化多步驟流程的開發,重點說明工作流引擎的基本概念、帶來的效益及其開發方式的轉變,幫助開發者認識這個框架級元件,進而改善開發及後續的維運工作。
-
The quest for simpler, more understandable concurrent programming has led languages like Kotlin, Python, C#, and TypeScript to embrace direct style constructs like coroutines and async/await. Scala is not far behind, and its upcoming direct style implementation promises to revolutionize how we tackle concurrency challenges.
In this talk, we'll dive into direct style programming in Scala 3, unlocking the potential of structured concurrency and harnessing the benefits of Project Loom in Java 21+. Discover how Scala's direct style goes beyond the capabilities of other languages, providing a seamless integration with functional programming paradigms and offering a compelling alternative to the love-hate relationship with monadic effects.
Join us to learn how to:
- Simplify concurrent code: Write code that reads like synchronous logic, while effortlessly managing asynchronous operations.
- Leverage structured concurrency: Ensure well-defined task lifecycles and error handling for robust concurrent applications.
- Embrace a functional approach: Experience how direct style complements and enhances functional programming techniques in Scala.
- Unlock new possibilities: Explore how Scala's direct style opens doors for innovative solutions in concurrent and asynchronous programming.
Whether you're a seasoned Scala developer or new to the language, this talk will equip you with the knowledge and tools to master direct style and conquer the complexities of concurrent programming with elegance and power.
Performance Tuning is one of the important aspect for Java software developer as a part of a successful deployment. When we measure the performance of a Java application, what exactly are we measuring? What are the commonly used tools you need to use, and what are the pitfall of using these tools? In this talk we will introduce you to the world of performance tuning and I will show you a live example of using these tools
讓我們來聊聊 Jib,這是個專門為 Java 開發者設計的容器打包工具。我會簡單的介紹它的優點和運作方式,並展示如何用 Jib 打包 Java 應用程式,接著再分享如何擴充 Jib 的功能,以滿足我們團隊的使用場景。希望這次分享能幫助你更好的使用 Jib!
在現代軟體開發中,優雅且安全的錯誤處理至關重要。Functional programming 函式庫 - Arrow kt 為 Kotlin 提供了強大的工具,其中 Typed Error 功能尤為突出。本演講將深入探討 Arrow kt 的 Typed Error,展示其如何改進傳統的錯誤處理方式。我們將通過一個實際案例,對比使用 Arrow kt 前後的差異,展示如何提升代碼的可讀性與可維護性。參與者將學習到 Typed Error 的基本用法、最佳實踐以及在項目中的應用技巧。無論您是 Kotlin 新手還是經驗豐富的開發者,本演講都將為您提供實用的見解和技術,幫助您在開發中更高效地處理錯誤。
-
The world has changed — everything is fast. You’re busy updating your technical skills, but are you leveraging the most efficient learning techniques? Are you building your network in a systematic way. Are you contributing to communities?
There are massive benefits to contributing to Open Source projects, especially Java as one of the more innovative and long lasting software development communities in the world. But remember that although communities are fun and valuable they can also be fragile and change radically. They need continual nurturing so they can support opportunities for contributors.
In this session, we’ll explore the skills necessary to learn new things deeply, contribute things of value to communities, and build our own innovative networks to leverage markets. The result is that we benefit, the community benefits, our friends benefit, and our employers benefit. These four levels represent reciprocal relationships that need careful consideration.
We'll talk about concepts from network science, neuroscience, education, and history, while also introducing practical simple tools like spaced repetition algorithms to help promote memory and learning. I’ll share some career success stories of my own and also some of my catastrophic failures. I’ve photographed thousands of developers and interviewed hundreds of them for videos, streams, and podcast, so we surely have many images to show and many lessons we can discuss to help us all thrive in this crazy fast world.
泛型在 JVM 生態系中扮演著重磅級的特性,但也由於其實作上的規範設計衍生出了各式 Java 獨有的「設計模式」,更進一步地影響了 JVM 生態系中各式語言的後續語言設計!
本次分享中,將會一步步帶領聽眾從最基本的 Java Generic,到 JVM Generic 的規範,並以 Fastutil 所解決的困境的設計為例,最後帶入 Project Valhalla 所預計實現的願景。
在當今人工智能技術迅猛發展的時代,Java 開發者在多語言模型應用的領域面臨著空前的機遇與挑戰。還在羨慕其他語言的先進工具嗎?別擔心,因為 Java 現已迎來了 LangChain4j 和 Spring AI 這兩大強力支援!將為 Java 開發者提供了前所未有的便利和動力,使得跨足多語言模型應用變得觸手可及。
在這次的分享中,我將介紹如何應用 LangChain4j 和 Spring AI 來開發和部署多語言模型應用。無論你是尋求突破,還是希望探索 AI 的新領域,都歡迎一起來探索新的可能性!
學習一門語言,當然不能只有會用而已,就像過馬路需要停、看、聽同時發揮才能幫助你順利的到達目的地,就讓我們一起來學習 Kotlin 怎麼用之外的一些有趣的小知識吧~