Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Play with legacy

No description
by

Dominik Radziszowski

on 25 July 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Play with legacy

PLAY
with legacy
Dominik
Radziszowski

dr@xtrf.eu
Wybór klocków
architect
wykładowca
trener
administrator
dyrektor IT /
współwłaściciel
Dominik
...oczekiwanie
...szukanie
tail -f logs/server.log
Jest rozwiązanie !
modern web framework for Java and Scala
Credentials
Szybki start
http://www.playframework.com
Pobierz
Uruchom
cmd> play run
Stwórz
cmd> play new jdd-testApp
http://127.0.0.1:9000
"Convenient proxy factory bean superclass for proxy factory beans that create only singletons. " ???
wiosenne
przesilenie
Struktura aplikacji
Let's play
redeploy
request
nio
Obecna
technologia
sprawdzona / działa
wysoka ekspertyza
Play
Cool (+Scala, +IT)
lekki
efektywniejsza praca
większa wydajność
wolny proces implementowania
wysoka złożoność
wysokie zużycie zasobów
niechęć deweloperów
JBoss Seam, JSF, RichFaces
A co Ty wiesz o Play?
SPIKE
Produkt
Dane
Interakcja
Proces
SPIKE
1988
...językoznawstwo
...wróżenie
wąteczki
- oczekiwanie
- szukanie
- wróżenie
- jezykoznawstwo
Programowanie ???
The Play Framework at LinkedIn
- Yevgeniy Brikman
Podziękowania
Maurycy, Piotrek
?
hot
Hello World
1) kontroler - app/controllers/Application.java
public static Result hello() {
return ok("Hello from conference!");
}
2) router - conf/routers
GET /hello controllers.Application.hello()
Parametr
http://localhost:9000/hello?name=JDD
1) kontroler - app/controllers/Application.java
public static Result hello(String name) {
return ok("Hello from " + name);
}
2) router - conf/routers
GET /hello controllers.Application.hello(name)
Konwersja typu
http://localhost:9000/hello?name=JDD&year=2013
1) kontroler - app/controllers/Application.java
public static Result hello(String name, int year) {
return ok("Hello from " + name + "-" + year);
}
2) router - conf/routers
GET /hello controllers.Application.hello(name:String, year:Int)
z URL
http://localhost:9000/hello/JDD/2013
1) kontroler - app/controllers/Application.java
2) router - conf/routers
GET /hello/:name/:year
controllers.Application.hello(name:String, year:Int)
bez zmian : -)
param binding
obsługa
błędów
W trybie developerskim.....
błędy widzimy w przeglądarce
- błędny typ parametru
- brak parametru
- brak akcji
- niepoprawna definicja routera
- błąd kompilacji kontrolera
szablony
app/views/
Widok
app/controllers/Application.java
hello.scala.html
public static Result hello(String name, int year) {
return ok(views.html.hello.render(name, year));
}
więcej....
Session and Flash scopes
Body parsers (JSON/XML)
Content negotiation
Comet sockets
WebSockets
HTTP
DBPlugin -> providing a JDBC datasource
EvolutionPlugin -> migration
EbeanPlugin -> OR mapping
MessagesPlugin - > i18n support
BasicCachePlugin -> in-memory caching
Plugins
+
-
+
-
Rezultat
SBT (simple build tool)
- nowe repozytorium artefaktów (?)
- nie jest maven'em (ivy)
FrontEnd - AngularJS/extJS
Integracja z CI
Kilka aplikacji Play
Eclipse +/-
Cool (+Scala, +IT)
efektywniejsza praca
większa wydajność
od nowej zabawki skuteczniejsza jest nowa piaskownica
destylacja domeny to nie zasługa frameworku
RULES!
+/- 40 osób
1 produkt
worldwide customers
dobrze wydzielona funkcjonalność
?
nowa aplikacja
nowa funkcjonalność
$> play package
dzielony
model danych
własny serwer
brak https
/app
/controllers/
/models/
/views/
/conf
application.conf
routes
/public/
stylesheets/
javascript/
images/
/project/
Build.scala
plugins.sbt
/lib/
/logs/
/target/
/test/
źródła aplikacji
kontrolery
warstwa biznesowa
szablony
konfiguracja
główny plik konf.
definicje routingu
zasoby publiczne
css
js
obrazki
konfiguracja SBT
skrypt budujący
rozszerzenia
biblioteki niezarządzalne
logi
<taget>
testy
To jest interesujące nowe podejście
ale nie możemy go wdrożyć, bo nigdy czegoś takiego nie wdrażaliśmy.
Play2WAR
Nie idzcie
tą drogą!
Produkcja
Dev
wydajność
addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "0.7")

project/plugin.sbt
val projectSettings = Play2WarPlugin.play2WarSettings ++ Seq(
Play2WarKeys.servletVersion := "3.0"
// Or Play2WarKeys.servletVersion := "2.5"
)

val main = PlayProject(
appName, appVersion, appDependencies, mainLang = JAVA
).settings(projectSettings: _*)
project/Build.scala
application.context=/myPlayApp
conf/application.conf
Niezależna sesja http
Dzielona sesja http
konflikty bibliotek!
web.xml
http://localhost:9000/hello
dzielona baza
Alberto Brandolini
(DDD expert)
Anti Corruption Layer
"Hello from conference"
ACL
Full transcript