SlideShare a Scribd company logo
1 of 40
Download to read offline
Java !!! Vaadin
8 Java Web
JJUG CCC 2017 Spring #ccc_i1
20 May 2017
Yutaka Kato
DXC Technology
#ccc_i1 Vaadin 8 Java Web
URL: https://goo.gl/IIztDT
URL : https://go-talks.appspot.com/github.com/mikan/talks/ccc-vaadin-8.slide
Introduction
Vaadin !
public class HelloWorld extends UI {
@Override
protected void init(VaadinRequest request) {
VerticalLayout content = new VerticalLayout();
setContent(content);
content.addComponent(new Label("Hello World!"));
content.addComponent(new Button(" !", click -> Notification.show(" !")));
}
}
Question
" ( ) #
"
"
" /
" Vaadin !
Vaadin
❓
" % Vaadin Ltd. OSS (Apache License 2.0)
❓ Vaadin Ltd.
"
❓ CSS HTML
" ... Valo
❓ G
" v4.1 (
)
Yutaka Kato
Vaadin (
)
(?)
Java BOF( / ) Go ( / ) AOSN (
/Discord)
DXC Java C#
DEMO
Vaadin Sampler
demo.vaadin.com/sampler/(https://demo.vaadin.com/sampler/)
Valo Theme
demo.vaadin.com/valo-theme/(https://demo.vaadin.com/valo-theme/)
( )
Vaadin Framework 8 ( Vaadin 7 API ) + Spring Boot 1.5
OAuth (spring-security-oauth2) GitHub
CloudFoundry Bluemix
Vaadin
vaadin.com/success-stories(https://vaadin.com/success-stories)
Vaadin
Vaadin Framework
2002 12 Millstone Library 3.0.0 (LGPL v2,
)
2007 3 IT Mill Toolkit 4.0 ( &)
2007 12 IT Mill Toolkit 4.1 (Apache License 2.0 ')
2009 5 Vaadin 6.0.0 ( ()
2017 2 Vaadin Framework 8.0 ( ))
demo.vaadin.com/RaindeerTheme(https://demo.vaadin.com/ReindeerTheme)
Vaadin Framework 8
API ( )
API com.vaadin.v7
Vaadin Framework 8 (1 of 3)
API
v *
List<Person> persons = Backend.getPersons();
BeanItemContainer<Person> container = new BeanItemContainer(Person.class, persons);
Grid grid = new Grid();
grid.setContainerDataSource(container);
grid.removeAllColumns();
grid.addColumn("firstName");
grid.getColumn("firstName").setHeaderCaption("First Name");
v +
List<Person> persons = Backend.getPersons();
Grid<Person> grid = new Grid<>(Person.class);
grid.setItems(persons);
grid.addColumn(Person::getFirstName).setCaption("First Name");
getter, setter ',
Vaadin Framework 8 (2 of 3)
API ( )
v *
comboBox.addValueChangeListener(evt -> {
Person p = (Person) evt.getProperty().getValue();
assert(p.getId() == 42);
});
v7 getValue() Object -
v +
comboBox.addValueChangeListener(evt -> {
assert(evt.getValue().getId() == 42);
});
v8 API ',
Vaadin Framework 8 (3 of 3)
(null )
DateField Java SE 8 Date Time API
.
⚠
Table Grid (v7 API Compatibility Server )
Internet Explorer 8/9/10
Spring Boot
Vaadin4Spring Spring Framework
Spring Boot
UI @SpringUI View @SpringView (
com.vaadin.spring.annotation)
Spring Initializr(https://start.spring.io) (Vaadin Framework 8.0.x )
Vaadin ( )
API Java 8 SE 8 API
➡ API
Spring Framework, Spring Boot
➡ Spring Java Web
Vaadin GWT
Source: Book of Vaadin (v7)
(Java ) GWT (Google Web
Toolkit)
Source: Book of Vaadin (v8)
(
)
Source: Book of Vaadin (v8)
Vaadin
Vaadin Designer (UI Eclipse, IntelliJ )
Vaadin Chart ( )
Vaadin TestBench (UI )
Vaadin Board 1 ( )
Vaadin TouchKit ( API v8 )
!?
➡ Vaadin TestBench Java
➡ Selenium DOM
(Vaadin DOM )
Vaadin TestBench Selenium
# TestBench (github.com/vaadin/testbench)
Selenide (1 of 2)
http://selenide.org/
content.addComponent(new Label("Hello World!"));
Button button = new Button(" !", click -> Notification.show(" !"));
button.setId("selenide-amazing-button"); // UI
scontent.addComponent(button);
Selenide (2 of 2)
public class HelloWorldTest {
@BeforeClass
public static void beforeClass() {
Configuration.browser = WebDriverRunner.CHROME;
System.setProperty("webdriver.chrome.driver", "C:/opt/bin/chromedriver.exe");
Configuration.timeout = 10;
VaadinSpringDemoApplication.main(new String[]{"--server.port=8080", "--spring.profiles.ac
}
@Test
public void () {
open("http://localhost:8080/");
$("#selenide-amazing-button").should(appear);
$("#selenide-amazing-button").shouldHave(text(" !"));
$("#selenide-amazing-button").click();
screenshot(" ");
$(".v-Notification-caption").should(appear);
$(".v-Notification-caption").shouldHave(text(" !"));
screenshot(" ");
}
}
E2E ( )
(Valo Theme )
( )
#
(IDE)
➡ Vaadin
Jetty
➡ Spring Boot
Spring Spring Boot UI
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.security.oauth:spring-security-oauth2')
compile('com.vaadin:vaadin-spring-boot-starter')
compile('org.vaadin.spring.addons:vaadin-spring-addon-i18n:2.0.0.RELEASE')
compile('com.vaadin:vaadin-compatibility-server')
runtime('com.vaadin:vaadin-compatibility-client-compiled')
( ) build.gradle
(1 of 2)
for Java EE Developers
✅ ( )
✅ ( )
✅ Vaadin Designer
Java EE download bundle
✅ ( )
✅ ( )
❌ Vaadin Designer
(2 of 2)
Ultimate
✅ ( )
✅ ( )
✅ Vaadin Designer
Community
⚠ ( )
❌
✅ Vaadin Designer
Vaadin Eclipse
IntelliJ OK + Ultimate
Vaadin Designer Eclipse IntelliJ
Maven (Archetype )
Gradle (mavenBom )
Vaadin
Vaadin
4
5 JS HTML5 Web UI
AWT/Swing Web UI
​Web
6 ( ) Java (JVM )
Vaadin API Java 8
ZK Java UI
2 Vaadin Framework 8 Java 8 Spring Boot
Vaadin Framework
Vaadin Ltd.
Vaadin Framework Java
Happy hacking! 7
Thank you
Yutaka Kato
DXC Technology
https://mikan.github.io/(https://mikan.github.io/)

More Related Content

What's hot

React Nativeの光と闇
React Nativeの光と闇React Nativeの光と闇
React Nativeの光と闇Yukiya Nakagawa
 
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Matt Raible
 
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Matt Raible
 
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019Matt Raible
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...César Hernández
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Matt Raible
 
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Matt Raible
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Matt Raible
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopArun Gupta
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web DevelopmentHong Jiang
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
 
Open Source Swift: Up and Running
Open Source Swift: Up and RunningOpen Source Swift: Up and Running
Open Source Swift: Up and RunningCarl Brown
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Matt Raible
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSArun Gupta
 
Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018Matt Raible
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011Shreedhar Ganapathy
 
DevQuiz 2011 の模範解答 Android編
DevQuiz 2011 の模範解答 Android編DevQuiz 2011 の模範解答 Android編
DevQuiz 2011 の模範解答 Android編Makoto Yamazaki
 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web FrameworkWill Iverson
 
Groovy And Grails JUG Padova
Groovy And Grails JUG PadovaGroovy And Grails JUG Padova
Groovy And Grails JUG PadovaJohn Leach
 

What's hot (20)

React Nativeの光と闇
React Nativeの光と闇React Nativeの光と闇
React Nativeの光と闇
 
Os Johnson
Os JohnsonOs Johnson
Os Johnson
 
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
 
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
 
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
 
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
2018 (codeone) Graal VM and MicroProfile a polyglot microservices solution [d...
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
 
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
Open Source Swift: Up and Running
Open Source Swift: Up and RunningOpen Source Swift: Up and Running
Open Source Swift: Up and Running
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG...
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 
Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
DevQuiz 2011 の模範解答 Android編
DevQuiz 2011 の模範解答 Android編DevQuiz 2011 の模範解答 Android編
DevQuiz 2011 の模範解答 Android編
 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web Framework
 
Groovy And Grails JUG Padova
Groovy And Grails JUG PadovaGroovy And Grails JUG Padova
Groovy And Grails JUG Padova
 

Similar to Vaadin 8 によるオール java web アプリ開発の仕組みと実践

Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CNjojule
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Matt Raible
 
Mobile Java with GWT: Still "Write Once, Run Everywhere"
Mobile Java with GWT: Still "Write Once, Run Everywhere"Mobile Java with GWT: Still "Write Once, Run Everywhere"
Mobile Java with GWT: Still "Write Once, Run Everywhere"Alex Theedom
 
Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Stephen Chin
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Matt Raible
 
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Florent BENOIT
 
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Stephen Chin
 
Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Matt Raible
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Sami Ekblad
 
2013 Human Talks - Vaadin Teaser in 10 minutes
2013 Human Talks - Vaadin Teaser in 10 minutes2013 Human Talks - Vaadin Teaser in 10 minutes
2013 Human Talks - Vaadin Teaser in 10 minutesNicolas Fränkel
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web ToolkitDidier Girard
 
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersTeng Shiu Huang
 

Similar to Vaadin 8 によるオール java web アプリ開発の仕組みと実践 (20)

Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
 
Mobile Java with GWT: Still "Write Once, Run Everywhere"
Mobile Java with GWT: Still "Write Once, Run Everywhere"Mobile Java with GWT: Still "Write Once, Run Everywhere"
Mobile Java with GWT: Still "Write Once, Run Everywhere"
 
Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
 
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
Devoxx France: Développement JAVA avec un IDE dans le Cloud: Yes we can !
 
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
Moving to the Client - JavaFX and HTML5 (PowerPoint Version)
 
SWTBot Tutorial
SWTBot TutorialSWTBot Tutorial
SWTBot Tutorial
 
Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015
 
GWT
GWTGWT
GWT
 
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter LehtoJavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
 
GWT- Google Web Toolkit
GWT- Google Web ToolkitGWT- Google Web Toolkit
GWT- Google Web Toolkit
 
2013 Human Talks - Vaadin Teaser in 10 minutes
2013 Human Talks - Vaadin Teaser in 10 minutes2013 Human Talks - Vaadin Teaser in 10 minutes
2013 Human Talks - Vaadin Teaser in 10 minutes
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
 
HTML5 Intro
HTML5 IntroHTML5 Intro
HTML5 Intro
 
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE Developers
 

More from Yutaka Kato

かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版Yutaka Kato
 
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Yutaka Kato
 
AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017Yutaka Kato
 
Present でスライドを作ろう
Present でスライドを作ろうPresent でスライドを作ろう
Present でスライドを作ろうYutaka Kato
 
データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)Yutaka Kato
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016Yutaka Kato
 
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術Yutaka Kato
 
GBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートGBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートYutaka Kato
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 

More from Yutaka Kato (9)

かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版かとうの Kotlin 講座 こってり版
かとうの Kotlin 講座 こってり版
 
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
Slack の過去ログ倉庫を建てよう (2017 合宿 LT)
 
AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017AOSN読書会 年次活動報告 2017
AOSN読書会 年次活動報告 2017
 
Present でスライドを作ろう
Present でスライドを作ろうPresent でスライドを作ろう
Present でスライドを作ろう
 
データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)データで見るAOSN読書会 (2016 合宿 LT)
データで見るAOSN読書会 (2016 合宿 LT)
 
GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016GBDC 勉強会 #6 Java イベントレポート 2016
GBDC 勉強会 #6 Java イベントレポート 2016
 
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
APDC 勉強会 #4 動的解析 - NASA から学ぶ超高信頼ソフトウェア技術
 
GBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポートGBDC 勉強会 #2 Android Studio 実践レポート
GBDC 勉強会 #2 Android Studio 実践レポート
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 

Recently uploaded

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

Vaadin 8 によるオール java web アプリ開発の仕組みと実践

  • 1. Java !!! Vaadin 8 Java Web JJUG CCC 2017 Spring #ccc_i1 20 May 2017 Yutaka Kato DXC Technology
  • 2. #ccc_i1 Vaadin 8 Java Web URL: https://goo.gl/IIztDT URL : https://go-talks.appspot.com/github.com/mikan/talks/ccc-vaadin-8.slide
  • 4. Vaadin ! public class HelloWorld extends UI { @Override protected void init(VaadinRequest request) { VerticalLayout content = new VerticalLayout(); setContent(content); content.addComponent(new Label("Hello World!")); content.addComponent(new Button(" !", click -> Notification.show(" !"))); } }
  • 5. Question " ( ) # " " " / " Vaadin !
  • 6. Vaadin ❓ " % Vaadin Ltd. OSS (Apache License 2.0) ❓ Vaadin Ltd. " ❓ CSS HTML " ... Valo ❓ G " v4.1 ( )
  • 7. Yutaka Kato Vaadin ( ) (?) Java BOF( / ) Go ( / ) AOSN ( /Discord) DXC Java C#
  • 11. ( ) Vaadin Framework 8 ( Vaadin 7 API ) + Spring Boot 1.5 OAuth (spring-security-oauth2) GitHub CloudFoundry Bluemix
  • 14. Vaadin Framework 2002 12 Millstone Library 3.0.0 (LGPL v2, ) 2007 3 IT Mill Toolkit 4.0 ( &) 2007 12 IT Mill Toolkit 4.1 (Apache License 2.0 ') 2009 5 Vaadin 6.0.0 ( () 2017 2 Vaadin Framework 8.0 ( )) demo.vaadin.com/RaindeerTheme(https://demo.vaadin.com/ReindeerTheme)
  • 15. Vaadin Framework 8 API ( ) API com.vaadin.v7
  • 16. Vaadin Framework 8 (1 of 3) API v * List<Person> persons = Backend.getPersons(); BeanItemContainer<Person> container = new BeanItemContainer(Person.class, persons); Grid grid = new Grid(); grid.setContainerDataSource(container); grid.removeAllColumns(); grid.addColumn("firstName"); grid.getColumn("firstName").setHeaderCaption("First Name"); v + List<Person> persons = Backend.getPersons(); Grid<Person> grid = new Grid<>(Person.class); grid.setItems(persons); grid.addColumn(Person::getFirstName).setCaption("First Name"); getter, setter ',
  • 17. Vaadin Framework 8 (2 of 3) API ( ) v * comboBox.addValueChangeListener(evt -> { Person p = (Person) evt.getProperty().getValue(); assert(p.getId() == 42); }); v7 getValue() Object - v + comboBox.addValueChangeListener(evt -> { assert(evt.getValue().getId() == 42); }); v8 API ',
  • 18. Vaadin Framework 8 (3 of 3) (null ) DateField Java SE 8 Date Time API . ⚠ Table Grid (v7 API Compatibility Server ) Internet Explorer 8/9/10
  • 19. Spring Boot Vaadin4Spring Spring Framework Spring Boot UI @SpringUI View @SpringView ( com.vaadin.spring.annotation) Spring Initializr(https://start.spring.io) (Vaadin Framework 8.0.x )
  • 20. Vaadin ( ) API Java 8 SE 8 API ➡ API Spring Framework, Spring Boot ➡ Spring Java Web
  • 22. Source: Book of Vaadin (v7)
  • 23.
  • 24. (Java ) GWT (Google Web Toolkit) Source: Book of Vaadin (v8)
  • 25. ( ) Source: Book of Vaadin (v8)
  • 26.
  • 27. Vaadin Vaadin Designer (UI Eclipse, IntelliJ ) Vaadin Chart ( ) Vaadin TestBench (UI ) Vaadin Board 1 ( ) Vaadin TouchKit ( API v8 )
  • 28. !? ➡ Vaadin TestBench Java ➡ Selenium DOM (Vaadin DOM ) Vaadin TestBench Selenium # TestBench (github.com/vaadin/testbench)
  • 29. Selenide (1 of 2) http://selenide.org/ content.addComponent(new Label("Hello World!")); Button button = new Button(" !", click -> Notification.show(" !")); button.setId("selenide-amazing-button"); // UI scontent.addComponent(button);
  • 30. Selenide (2 of 2) public class HelloWorldTest { @BeforeClass public static void beforeClass() { Configuration.browser = WebDriverRunner.CHROME; System.setProperty("webdriver.chrome.driver", "C:/opt/bin/chromedriver.exe"); Configuration.timeout = 10; VaadinSpringDemoApplication.main(new String[]{"--server.port=8080", "--spring.profiles.ac } @Test public void () { open("http://localhost:8080/"); $("#selenide-amazing-button").should(appear); $("#selenide-amazing-button").shouldHave(text(" !")); $("#selenide-amazing-button").click(); screenshot(" "); $(".v-Notification-caption").should(appear); $(".v-Notification-caption").shouldHave(text(" !")); screenshot(" "); } }
  • 31. E2E ( ) (Valo Theme ) ( ) #
  • 32. (IDE)
  • 33. ➡ Vaadin Jetty ➡ Spring Boot Spring Spring Boot UI compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-security') compile('org.springframework.boot:spring-boot-starter-actuator') compile('org.springframework.security.oauth:spring-security-oauth2') compile('com.vaadin:vaadin-spring-boot-starter') compile('org.vaadin.spring.addons:vaadin-spring-addon-i18n:2.0.0.RELEASE') compile('com.vaadin:vaadin-compatibility-server') runtime('com.vaadin:vaadin-compatibility-client-compiled') ( ) build.gradle
  • 34. (1 of 2) for Java EE Developers ✅ ( ) ✅ ( ) ✅ Vaadin Designer Java EE download bundle ✅ ( ) ✅ ( ) ❌ Vaadin Designer
  • 35. (2 of 2) Ultimate ✅ ( ) ✅ ( ) ✅ Vaadin Designer Community ⚠ ( ) ❌ ✅ Vaadin Designer
  • 36. Vaadin Eclipse IntelliJ OK + Ultimate Vaadin Designer Eclipse IntelliJ Maven (Archetype ) Gradle (mavenBom )
  • 38. Vaadin 4 5 JS HTML5 Web UI AWT/Swing Web UI ​Web 6 ( ) Java (JVM ) Vaadin API Java 8 ZK Java UI
  • 39. 2 Vaadin Framework 8 Java 8 Spring Boot Vaadin Framework Vaadin Ltd. Vaadin Framework Java Happy hacking! 7
  • 40. Thank you Yutaka Kato DXC Technology https://mikan.github.io/(https://mikan.github.io/)