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

40
Java ! ! ! Vaadin 8 Java Web JJUG CCC 2017 Spring #ccc_i1 20 May 2017 Yutaka Kato DXC Technology

Upload: yutaka-kato

Post on 22-Jan-2018

439 views

Category:

Software


0 download

TRANSCRIPT

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

Java !!! Vaadin8 Java Web

JJUG CCC 2017 Spring #ccc_i120 May 2017

Yutaka KatoDXC Technology

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

#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

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

Introduction

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

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(" !"))); }}

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

Question

" ( ) #

"

"

" /

" Vaadin !

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

Vaadin

" % Vaadin Ltd. OSS (Apache License 2.0)

❓ Vaadin Ltd.

"

❓ CSS HTML

" ... Valo

❓ G

" v4.1 ()

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

Yutaka Kato

Vaadin ()

(?)

Java BOF( / ) Go ( / ) AOSN (/Discord)

DXC Java C#

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

DEMO

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

Vaadin Sampler

demo.vaadin.com/sampler/ (https://demo.vaadin.com/sampler/)

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

Valo Theme

demo.vaadin.com/valo-theme/ (https://demo.vaadin.com/valo-theme/)

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

( )

Vaadin Framework 8 ( Vaadin 7 API ) + Spring Boot 1.5

OAuth (spring-security-oauth2) GitHub

CloudFoundry Bluemix

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

Vaadin

vaadin.com/success-stories (https://vaadin.com/success-stories)

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

Vaadin

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

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)

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

Vaadin Framework 8

API ( )

API com.vaadin.v7

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

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 ',

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

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 ',

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

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

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

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 )

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

Vaadin ( )

API Java 8 SE 8 API

➡ API

Spring Framework, Spring Boot

➡ Spring Java Web

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

Vaadin GWT

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

Source: Book of Vaadin (v7)

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

(Java ) GWT (Google WebToolkit)

Source: Book of Vaadin (v8)

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

()

Source: Book of Vaadin (v8)

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

Vaadin

Vaadin Designer (UI Eclipse, IntelliJ )

Vaadin Chart ( )

Vaadin TestBench (UI )

Vaadin Board 1 ( )

Vaadin TouchKit ( API v8 )

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

!?

➡ Vaadin TestBench Java

➡ Selenium DOM

(Vaadin DOM )

Vaadin TestBench Selenium

# TestBench (github.com/vaadin/testbench)

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

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);

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

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.active=test"}); }

@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(" "); }}

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

E2E ( )

(Valo Theme )

( )

#

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

(IDE)

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

➡ 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

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

(1 of 2)

for Java EE Developers

✅ ( ) ✅ ( ) ✅ Vaadin Designer

Java EE download bundle

✅ ( ) ✅ ( ) ❌ Vaadin Designer

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

(2 of 2)

Ultimate

✅ ( ) ✅ ( ) ✅ Vaadin Designer

Community

⚠ ( ) ❌ ✅ Vaadin Designer

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

Vaadin Eclipse

IntelliJ OK + Ultimate

Vaadin Designer Eclipse IntelliJ

Maven (Archetype )

Gradle (mavenBom )

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

Vaadin

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

Vaadin

4

5 JS HTML5 Web UI

AWT/Swing Web UI

Web

6 ( ) Java (JVM )

Vaadin API Java 8

ZK Java UI

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

2 Vaadin Framework 8 Java 8 Spring Boot

Vaadin Framework

Vaadin Ltd.

Vaadin Framework Java

Happy hacking! 7

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

Thank you

Yutaka KatoDXC Technologyhttps://mikan.github.io/ (https://mikan.github.io/)