JCConf 2022

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
08:50
08:50
35min
Registration

-

ROOM 401
09:25
09:25
10min
Opening

-

ROOM 401
09:35
09:35
5min
宣傳議程(LINE)

總部位於日本的 LINE 以「拉近你我的距離」為企業使命,透過多元的行動服務與內容,致力將人們、資訊與社會緊密連結。自 2011 年 6 月以通訊軟體的型態推出,現更推展其多元的全球生態系,並將觸角延伸至人工智慧、金融科技等領域,積極實現「智慧入口」的願景,2021 年 3 月,LINE 與日本規模最大的網路科技集團之一 Z Holdings 正式整併,未來也將持續提供用戶享有最即時、便利的行動生活。欲瞭解更多資訊,請瀏覽官方網站:http://linecorp.com/zh-hant/

Promotion
ROOM 401
09:40
09:40
45min
From Java 17 to Java 21 and Beyond
Jose PAUMARD

The two years release cadence of LTS versions gives the entire Java ecosystem the opportunity to accelerate. It also brings the new features Java has to offer faster, so that developers can improve applications readability, maintainability as well as development productivity.
This presentation covers three of the new features of the JDK: Amber, Loom and Valhalla. Amber is about bringing pattern matching to the Java language. It's currently added bit by bit: records, pattern matching for instanceof, for switch, and record pattern matching. Loom offers a new concurrent programming model. With Loom, you can write your code in a synchronous way, without any callback, and execute it asynchronously, with all the performances benefits you may expect. It is a preview feature of the JDK 19. Valhalla brings a new kind of objects to the language, so that you do not have to choose between performances and abstraction.

401
ROOM 401
10:25
10:25
5min
Break

-

ROOM 401
10:30
10:30
5min
宣傳議程(Nogle)

Nogle於2014年成立至今,為一軟體開發公司,創立初衷期望成為一內部新創孵化器,共同將商業概念打造成產品,擴展規模,最終成為獨立企業。
在面對8年多的市場挑戰,Nogle已經找出屬於自己的藍海,未來將聚焦於金融科技結合區塊鍊產品及技術,目前我們的產品在短短的三年多已轉虧為盈,成績也達到空前的頂峰。

Promotion
ROOM 401
10:35
10:35
45min
From Spring to Quarkus
Vincent Huang

In this session, we will introduce Quarkus briefly and compare features which Spring framework also have. Demo a Quarkus project migrate from Spring framework.

402AB
ROOM 402AB
10:35
45min
Kotlin Coroutine X Functional Programming
Andy Lu

Coroutine 是 Kotlin 用來解決非同步工作的解決方案,使用 Coroutine 我們就能用更優雅的方式寫出非同步的程式碼,並把 Callback 拋在腦後。

Functional Programming (FP) 是一種程式範式,使用 FP 能夠讓我們用更簡短的方式完成功能,用 Kotlin 標準函式庫提供的函式把想要完成的功能串起來,江湖人稱的「串串大法」。

將 Coroutine 以 FP 的方式來開發,會不會迸出什麼新滋味呢?

Arrow-kt 函式庫中,有個分類叫做 FX,它是用來將 FP 使用在 Coroutine 上的,究竟要怎麼使用呢?

在本次的演講當中,包含以下內容: * Coroutine 的基本介紹 * Functional Programming 的基本介紹 * Arrow FX 的應用

402CD
ROOM 402CD
10:35
45min
New Features in Java 18 & 19
Joseph Kuo

Java 18 and 19 are released in 2022, including Simple Web Server, Code Snippet in JavaDoc, Vector API, Foreign Function & Memory API, Pattern Matching for switch, Record Patterns and Virtual Threads. Although some of them are still in the preview or incubator stage, we still need to keep learning about the knowledge. They not only improve performance of Java applications, but also introduce new syntax and API to ease our effort to write more readable and efficient code. This session is to introduce these new features and their intentions.

401
ROOM 401
11:20
11:20
15min
Break

-

ROOM 401
11:35
11:35
5min
宣傳議程(Innova)

Innova Solutions Taiwan is one of the worldwide subsidiaries of Innova Solutions Inc., US.
The Taipei Development Center (TDC) is built as a premier software R&D center for Change Healthcare (https://www.changehealthcare.com/), one of the largest financial and medical data healthcare networks in the United States. With more than 30 years in the industry, Change Healthcare provides technology products and services to an industry-leading network of medical insurance payers and healthcare providers.
TDC further enhances Change Healthcare's market-leading position by developing new enterprise software and transforming existing solutions with the latest software technologies. Our ODC (Offshore Development Center) partnership model integrates our team with healthcare IT giant's 15,000+ globally distributed team members on a variety of technical domains.

Promotion
ROOM 401
11:40
11:40
45min
With Cloud Native never build your application, just Continuously Integrate
Kamesh Sampath

Over the past few years, lots of organizations have started to adopt Cloud Native architectures. Despite the adoption of Cloud Native architectures many companies haven’t achieved optimal results. Wondering why? One of the reasons is our adherence to traditional ways of building and deploying applications.

Kubernetes has become the de facto Cloud Native deployment platform. It offers radically easy scaling and fault tolerance. Despite this, not many CI systems utilize the benefits of kubernetes. None of the existing build system offers the capabilities that are native to Kubernetes like in-cluster building, leveraging underlying security and access control etc.,

In this session we will explore an Open Source project Drone -- a cloud native self-service Continuous Integration platform -- . Though 10 years old, Drone offers a mature, Kubernetes based CI system harnessing the scaling and fault tolerance characteristics of Cloud Native architectures.

402AB
ROOM 402AB
11:40
45min
如何使用 Kotlin 快速建構企業網路應用程式
Maggie Kuo

本議程將介紹如何使用 Vaadin Framework 以 Java/Kotlin 快速開發企業級 Web 應用程式,Vaadin 是由芬蘭 Vaadin 公司所開發,用於建構網路應用程式和網站的 Java Web 框架。

402CD
ROOM 402CD
11:40
45min
街口支付核心 - From Good to Great
Charlie Chang

街口支付核負責街口核心業務,只要跟錢的流動,都跟支付核心有關,目前每月處理30億交易額。在此分享中,我們會說明街口支付核心系統架構,在穩定性的大前提下,如何支持街口快速業務擴展,其中包含 (但不僅限於) 系統設計、開發、測試和佈署流程,除此之外,我們也會說明街口如何在業務不斷擴充的同時,保持固定的維運成本。

401
ROOM 401
12:25
12:25
60min
🍴Lunch and Break

-

ROOM 401
13:25
13:25
15min
Apache Kafka replica搬移成本估計
孫祥鈞

Apache Kafka 爲目前熱門的分散式事件串流平臺,本身自帶各種豐富的功能,比如 Replication, JBOD, Authn/z, Encryption, Compression, At-most/At-least/Exactly once Delivery, Transaction,目前常見的 Kafka 應用包含:高吞吐量的資料管線、串流分析應用和資料整合中介軟體。

隨著叢集經歷上層應用的業務需求增長以及叢集資源使用變化,Kafka 叢集在經過這些現實情境的摧殘後,勢必會遭逢負載不平衡的情況, 放任負載不平衡的情況不顧,最終叢集會遭遇效能瓶頸和叢集穩定性問題。

為了解決負載不平衡的情況,會需要對叢集的副本的存放位置進行一些調整,而這些調整勢必會產生網路流量,本次演講主要在分享「為何需要估算成本」以及「如何估算成本」

本研究特別感謝『科學園區計畫-自主高效串流資料管理平台與新興應用』和『教育部開源人培計劃』的支持。

402AB
ROOM 402AB
13:25
15min
JPA 的 N+1 試煉之路
Tim Chen

身為剛接觸 JPA 不久的使用者,一路上遇到了許多不同的挑戰,而有些光從表面上看是完全感受不到有多可怕,一旦掉以輕心便會付出代價,N+1 Query Problem 正是其中之一,需要透過冷靜的觀察與分析來化解危機。
利用簡短的 15 分鐘,來分享

  • N+1 Query Problem 3W1H
  • 對於 N+1 的常見誤會
  • 402CD
    ROOM 402CD
    13:25
    15min
    Kafka consumer 負載平衡策略介紹與比較
    鄧智懋

    Apache Kafka為目前熱門的分散式資料串流系統,具備資料發送端(Producer)、資料儲存(Broker)、資料讀取端(Consumer)。

    隨著業務需求、叢集規模改變,可能導致單一consumer消費資料的速度無法滿足服務需求,Kafka以group的方式提供consumer容錯性及擴充性。

    為了避免consumer group內consumer負擔的消費流量不均勻,Kafka利用consumer assignor來分配每個consumer要消費的partitions。Kafka提供四種assignors,每種assignor所處理的情景都不同,本次演講主要分享四個Kafka consumer assignors的優缺點。

    401
    ROOM 401
    13:40
    13:40
    15min
    Break

    -

    ROOM 401
    13:55
    13:55
    5min
    宣傳議程(XREX)

    XREX 是一家「新金融科技」(neo fintech) 新創公司,與銀行、政府及通過認證的用戶密切合作,共同改寫金融定義。我們以區塊鏈技術為基礎,創造一個多方共享的跨境匯流平台,讓每一個人都可以平等參與,並對全球經濟做出貢獻。
    創立於2018年,總部位於台北的 XREX,匯集資安、法遵、數位貨幣、金融科技及跨境支付領域的國際頂尖人才,提供一站式的創新解決方案,如:數位支票BitCheck、線上需求媒合社群 XREX Circles、錢包地址安全自動偵測機制 Risk Level Detector 等,解決新興市場中小企業於跨境交易常面臨的美金流動性不足問題。

    Promotion
    ROOM 401
    14:00
    14:00
    45min
    Compose for Desktop - 開發桌面軟體的新選擇
    范聖佑

    自從 Android 團隊推出 Jetpack Compose 後,為 UI 開發打開了一條新路線。既然 Jetpack Compose 是由 Kotlin 打造,支援多平台就變得可能。透過 JetBrains 與 Google 兩方的團隊合作,Compose for Desktop 成為開發桌面軟體的新選擇。在這場分享裡,將模擬桌面軟體的開發,使用 Declarative 的風格實作 UI,並討論 Desktop 與 Mobile 的平台差異,以及開發過程中需要注意的細節。聽完這場分享後,會對 Compose for Desktop 的應用及實作方式有基本的認識。

    401
    ROOM 401
    14:00
    45min
    Functional programming from first principles in Scala
    張瑋修

    We know writing programs in a functional style has many benefits, and we try to learn all the ways to do functional programming. But do we know why functional programming has to be this way? Why do we need monads when they are so hard to understand?

    In this talk, we are going to derive some basic building blocks of functional programming from first principles. The set of propositions we constraint ourselves with is fundamental to the power of functional programming and we will show you why constraints are actually liberating when they come to programming.

    After this talk, you should have a better understanding of why functional programming is the way it is and hopefully will want to pursue it further in the future.

    402AB
    ROOM 402AB
    14:00
    45min
    快速落地 Big Data 資料應用: 在 Trino / Presto 上從頭打造 Postgres Wire Protocol
    Jax

    在資料爆炸的時代,資料處理分析引擎與工具如雨後春筍般冒出。從基礎設施的資料庫、資料倉儲到資料湖;各式資料轉換的 ETL 工具與查詢引擎:終端資料視覺化呈現的 BI 報表工具,讓資料分析工程愈加繁複。作為資料處理系統最重要的事情就是如何讓處理的結果正確與快速地送到使用者的手上,在如今工具種類繁複的時代,這件事變成了一個複雜且嚴峻的挑戰。Canner作為一個致力於加速資料調用的團隊,我們使用了 Trino (過去稱為 Presto) 來快速連結各種資料源,其很完美地整合了各大資料平台,但在試圖連結各種工具軟體時,我們碰到了很大的挑戰。

    因此我們選擇了擁抱 PostgreSQL 生態圈,PostgreSQL 作為發展悠久的關聯式資料庫系統,其擁有大量的使用者與完整的社群生態圈。我們實作了 Postgres Wire Protocol 讓 Trino 可以被客戶端識別為 PostgreSQL 來使用,這樣單純的想法讓我們能夠支援的工具軟體一口氣地快速擴張出去。從程式開發人員最普遍使用的 JDBC 或是 ODBC;資料庫人員常用的 IDE ,Dbeaver、TablePlus 或 DataGrip 等;到業務決策人員需要的 BI 工具,Tableau 與 PowerBI。

    在這次的議程中,我們將會介紹 Postgres Wire Protocol 的運作原理,並分享我們在進行 Trino SQL 與 PostgreSQL 相容時所碰到議題與我們的解決方法。最後的目標是創立一個開源專案,將我們的成果回饋於社群,並且讓 Postgres Wire Protocol 不只適用於 Trino ,更可以應用到更多的查詢引擎上,使資料調用不再是件困難的挑戰。

    203
    ROOM 203
    14:00
    45min
    演講的投影片還沒做,就用 Kotlin 做一個吧
    Recca Chao

    演講的投影片還沒做怎麼辦?就用 Kotlin 做一個吧!

    示範如何用 Kotlin 製作演講的投影片

    402CD
    ROOM 402CD
    14:00
    180min
    讓 TDD + Clean Architecture + CQRS + GOOS 助你每天準時下班
    Kuma Syu

    微服務呀微服務,世人都道你棒棒,為何唯獨我輩吃足你的苦頭?為何我們「導入微服務」後每天光是一個簡單的小功能都要做很久,好不容易上線了,每次查 bug 查一整天,最後才發現問題是出在一個超級小又超級蠢的地方?

    「不要跟我談理想,我只想每天準時下班啊!」

    在這個三小時的工作坊中,我們將用一個簡單但常見的小案例,帶大家走一趟從接需求、分析需求、拆分權責、到最後用 TDD 的方式,一步一步完成功能,從中體會書上說的「使用框架,又不被框架綁架」, 以及「程式寫完,測試也同時測完,重構也同時做完」 是長什麼樣子。

    本工作坊沒有要暢談什麼新世紀偉大的新架構革命性理念,我們只希望大家能離「天天準時下班」更近一點。

    註:本活動「需寫程式」,請參加者務必帶著自己的電腦,並安裝環境至「可寫程式與測試」的狀態。 參加者不限語言,範例程式是 Java。

    403
    ROOM 403
    14:45
    14:45
    10min
    Break

    -

    ROOM 401
    14:55
    14:55
    5min
    宣傳議程(MySQL)

    -

    Promotion
    ROOM 401
    15:00
    15:00
    45min
    Maven Puzzlers
    Andres Almiray

    Apache Maven is an ubiquitous build tool in the Java ecosystem, some even claim it's the defacto standard build tool. Configuring Maven is deceptively simple, after all it's just a matter of writing XML, isn't it? Things look differently when the rubber meets the road. One must know the intricacies of the build lifecycle; how plugins, goals (mojos), and phases come together; rules for dependency resolution; configuration inheritance between parent - child POM files; enhancing the build with profiles; and more. These features may trip you over if the rules that govern them are unclear. We'll present a series of scenarios to test your knowledge on Maven rules. we guarantee you'll leave this session with a few bits of new information and better understanding of the Maven build tool.

    402AB
    ROOM 402AB
    15:00
    45min
    MySQL InnoDB ClusterSet如何支援Java應用的容災計劃
    杜修文

    MySQL有多種高可用架構,由最簡單的主從複製到組複製,再到技術上比較複雜但能提供最高可用度的NDB Cluster技術一應俱全,您可以依照您的需求,挑選最適合您的MySQL應付場景的高可用技術.目前最為MySQL官方所推薦的技術是InnoDB Cluster,它不僅以組複製為基底,支援不丟資料的故障移轉,還在MySQL中間件上支援故障移轉透明化,還能以MySQL Shell的AdminAPI支援整個高可用生命週期的管理.最近MySQL管方更正式推出了能支援跨資料中心容災的MySQL InnoDB ClusterSet.本次演講將為您介紹MySQL InnoDB ClusterSet的架構,它是如合支援容災的需求,以及實施要點和注意事項.並且以一套簡單的Java應用展示InnoDB ClusterSet如何使您的Java應用在資料中心停止運時做到跨中心的故障移轉和容災.

    402CD
    ROOM 402CD
    15:00
    45min
    繼續花式 Spring Data JPA
    Rhys

    繼去年講過玩轉花式Spring Data JPA的題目中介紹了一些不容易注意到但有趣的功能,本次會著重在實務運用中如何合理的花式使用Spring Data JPA

    401
    ROOM 401
    15:00
    45min
    遊戲微服務計畫:用好的「木樁」來練就一身系統分析、設計和開發方法論及技術!
    水球潘

    大家好,我是水球潘~!

    🤔「身為軟體工程師,有這麼多東西要學,你到底有沒有想過要如何一氣呵成地全部學好?」

    軟體工程的發展累積至今,累積了有太多軟體設計、開發、維運思想以及方法論了——物件導向分析與設計 (Object-Oriented Analysis & Design)、軟體設計模式 (Software Design Pattern)、領域驅動設計(Domain-Driven Design)、Clean Code、乾淨架構 (Clean Architecture)、測試驅動開發 (Test-Driven Development) 、行為驅動開發 (Behavior-Driven Development)、DevOps⋯⋯等等;更充斥著各種技術,無論前端或是後端,小至套件、中至框架、大至各種雲端技術——思想、方法論和技術層出不窮。

    難道,我們不能像練武一樣,「只依靠一種木樁就能在其之上練就各種武術技法嗎?」,如此一來就算有人發明了新的技法,一轉眼我們就能立刻回到木樁上用高效率的方法學習此技法。

    在軟體圈內,這支「木樁」到底為何?能讓我們在面對未來的各種知識變遷時,高效學習、融會貫通和加速內化?

    💡💡這個演講中除了會分享「遊戲微服務計畫就是木樁!」之外,還會分享一道軟體工程的方法大集成,告訴你要「如何結合上述提到的所有方法論」來完成一個遊戲微服務。

    人生何其短,為何不把學習當成一趟旅程,和大家一起走一趟旅程就熟透知識呢?

    這一趟前來分享不為其他,只為邀請各位來一起享受軟體工程的灌溉!

    203
    ROOM 203
    15:45
    15:45
    30min
    ☕️Tea Time

    -

    ROOM 401
    16:15
    16:15
    45min
    Deploying MySQL and Java application for Kubernetes
    Ivan Ma

    如今,使用容器運行可能更易於管理。 MySQL Operator 為 Kubernetes 提供了方便的 Innodb Cluster 部署。 編寫 Java 應用程序以連接到該服務允許在主節點上進行讀/寫以及將 READ 負載拆分到 InnoDB 集群上的只讀服務,從而提供更具可擴展性的架構。 本次會議將介紹 MySQL Operator for Kubernetes 的新功能,以及我們如何編寫 Java 應用程序以使用讀/寫或只讀節點連接到“服務”。

    203
    ROOM 203
    16:15
    45min
    DevOps for Java developers
    Ixchel Ruiz

    In recent years, how we approach development has dramatically changed with the rise of DevOps, Cloud Computing, and Container technologies. Many stakeholders at our organizations are ecstatic about Shift Left, DevSecOps and VSM, but how are we as Java developers embracing this new cultural shift?
    In this session we will explore the most common Critical Challenges to Adopt DevOps Culture in
    Software Organizations, best practices and some excellent news with success stories.

    402AB
    ROOM 402AB
    16:15
    45min
    On log messages
    Laurence Chen
    • Why you need to write log messages?
    • What is logging?
    • How to write it well?
    • Log design case studies
    402CD
    ROOM 402CD
    16:15
    45min
    漫談 Java 開發者在 Visual Studio Code 的開發者體驗 (DX)
    Will 保哥

    微軟近幾年推出的 Visual Studio Code 風靡全世界,許多前端與後端的開發者幾乎都每日與它為伍,但 Java 開發者呢?本次演說我將帶大家深入剖析使用 Visual Studio Code 開發 Java 應用程式帶來的效益,以及在撰寫 Java 程式的時候所感受到的開發者體驗。

    401
    ROOM 401
    17:00
    17:00
    10min
    Break

    -

    ROOM 401
    17:10
    17:10
    45min
    Event streaming on multi-cloud architecture
    朱尚禮

    採用雲端服務已經是進行式了, 但是只用單一家雲端服務可能無法滿足老闆或是監管單位的要求, 如何透過 Event streaming 來設計我們的應用架構, 來達成 Multi-cloud 的需求, 讓應用系統可以實現跨雲運行.

    402CD
    ROOM 402CD
    17:10
    45min
    Functional Programming on the JVM with Kotlin
    Edgar Sanchez

    The functional programming paradigm has won popularity because of its expressiveness and power. Kotlin is a language 100% compatible with Java with many functional traits such as immutable by default, high-order functions, lazy evaluation. In this session we will simple practical examples where this functional capacities make the code easier to create, understand, and maintain.

    402AB
    ROOM 402AB
    17:10
    45min
    Using ArchUnit to test your architecture
    Matt

    同學, 別再打洞啦! 架構的重要性大家都清楚, 為了需求簡單做到處鑽孔只會讓整體架構逐漸失控, 搖搖欲墜. 但你知道架構也可以測試嗎? 本節淺談 ArchUnit 及分享實務上導入及使用經驗!

    401
    ROOM 401
    17:10
    45min
    快速開發部署微服務的平台 - Azure Spring Apps
    Howard Hung
    1. 開場簡介 Azure 與 Spring Cloud
    2. 地端開發測試 與 雲端快速部署
    3. Azure 所提供的微服務監控與日誌
    4. Tanzu Build Service 與 開源 Buildpacks 介紹
    5. 番外篇:如何快速切換部署至 K8s
    203
    ROOM 203