javaone brazil 2015: java e html5

62
Java e HTML5 combinação explosiva para aplicativos corporativos Loiane Groner @loiane http://loiane.com

Upload: loiane-groner

Post on 31-Jul-2015

1.589 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: JavaOne Brazil 2015: Java e HTML5

Java e HTML5 combinação explosiva para aplicativos corporativos

Loiane Groner @loiane

http://loiane.com

Page 2: JavaOne Brazil 2015: Java e HTML5

• 9+ XP TI

• Java, Sencha, Phonegap (mobile híbrido)

• http://loiane.com

• Livros:

Loiane Groner

Page 3: JavaOne Brazil 2015: Java e HTML5

Evolução Java e HTML/JS

Page 4: JavaOne Brazil 2015: Java e HTML5

<% String usuario = request.getParameter("usuario"); if ( usuario != null && usuario.length() > 0 ) { %> <%@include file="response.jsp" %> <% } %>

Page 5: JavaOne Brazil 2015: Java e HTML5

<c:forEach var="contato" items="${dao.lista}"> ${contato.nome}, ${contato.email}, ${contato.endereco}, ${contato.dataNascimento} </c:forEach>

Page 6: JavaOne Brazil 2015: Java e HTML5
Page 7: JavaOne Brazil 2015: Java e HTML5

http://d25ds5di20s2np.cloudfront.net/wp-content/uploads/2013/11/struts-hibernate-velocity-multi-customer.png

Page 8: JavaOne Brazil 2015: Java e HTML5

Header - MENU

Footer

Redireciona para: listarCliente.jsp editarCliente.jsp excluirCliente.jsp criarCliente.jsp

index.jsp

Page 9: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

DOMBrowser

App Server

HTML

Page 10: JavaOne Brazil 2015: Java e HTML5
Page 11: JavaOne Brazil 2015: Java e HTML5

Header - MENU

Footer

Mostra/Esconde: <div>listarCliente.jsp</div> <div>editarCliente.jsp</div> <div>excluirCliente.jsp</div> <div>criarCliente.jsp</div>

index.jsp +

templates

Page 12: JavaOne Brazil 2015: Java e HTML5
Page 13: JavaOne Brazil 2015: Java e HTML5

http://plugins.netbeans.org/data/images/1397832199_nbpfcrudgen-edit-dialog-full.png

Page 14: JavaOne Brazil 2015: Java e HTML5

Desacoplamento: o início

Page 15: JavaOne Brazil 2015: Java e HTML5
Page 16: JavaOne Brazil 2015: Java e HTML5

http://webdevbros.net.www144.your-server.de/wp-content/uploads/2009/10/SiamExplorer.png

Page 17: JavaOne Brazil 2015: Java e HTML5
Page 18: JavaOne Brazil 2015: Java e HTML5

http://aprendizweb.com.br/wp-content/uploads/2015/03/frontend-e-back-end.jpg

Page 19: JavaOne Brazil 2015: Java e HTML5

http://diy-visualpedia.s3.amazonaws.com/request-reponse-comic-03.png

Page 20: JavaOne Brazil 2015: Java e HTML5
Page 21: JavaOne Brazil 2015: Java e HTML5

http://www-scf.usc.edu/~chenemil/itp104/images/html5features.jpg

Page 22: JavaOne Brazil 2015: Java e HTML5
Page 23: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

DOMBrowser

App Server

HTML

Aplicação tradicional

Page 24: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

APIs REST

JSON

Aplicação moderna

DOM

App Server

Browser

Page 25: JavaOne Brazil 2015: Java e HTML5
Page 26: JavaOne Brazil 2015: Java e HTML5

http://www.the4cast.com/wp-content/uploads/2014/06/web-starterkit.jpg

Page 27: JavaOne Brazil 2015: Java e HTML5

APIs REST

Banco de Dados

JSON JSON

Page 28: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

APIs REST

JSON

WEB

DOM

App Server

Browser

Page 29: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

APIs REST

JSON

MOBILE

App Server

Dispositivo Móvel

WebView Nativa

Page 30: JavaOne Brazil 2015: Java e HTML5

• Nativo• Responsivo• Web App• App Híbrida

Page 31: JavaOne Brazil 2015: Java e HTML5

View

Controller

Model

APIs REST

JSON

DESKTOP

App Server

App Desktop

Wrapper

Page 32: JavaOne Brazil 2015: Java e HTML5

Demo

Page 33: JavaOne Brazil 2015: Java e HTML5

Troca de Dados

Page 34: JavaOne Brazil 2015: Java e HTML5

http://2.bp.blogspot.com/-jESwFrkSxMY/TbmvunKRhsI/AAAAAAAAAIo/luBQB38_kTo/s1600/xml-vs-json.jpg

Page 35: JavaOne Brazil 2015: Java e HTML5
Page 36: JavaOne Brazil 2015: Java e HTML5

<nome>Cliente 01</nome> <endereco>Rua Inventada 41</endereco> <cidade>São Paulo</cidade> <cnpj>66.260.339/0001-35</cnpj>

Page 37: JavaOne Brazil 2015: Java e HTML5

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("cliente"); doc.appendChild(rootElement);

Element name = doc.createElement("nome"); name.appendChild(doc.createTextNode("Cliente 01")); rootElement.appendChild(name);

Page 38: JavaOne Brazil 2015: Java e HTML5

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>", xmlDoc = $.parseXML( xml ), $xml = $( xmlDoc ), $title = $xml.find( "title" );

https://github.com/johngeorgewright/angular-xml

Page 39: JavaOne Brazil 2015: Java e HTML5
Page 40: JavaOne Brazil 2015: Java e HTML5

{ "nome":"Cliente 01", "endereco":"Rua Inventada 41", "cidade":"São Paulo", "cnpj":"66.260.339/0001-35" }

Page 41: JavaOne Brazil 2015: Java e HTML5

JSONObject obj=new JSONObject(); obj.put("name","foo"); obj.put("num",new Integer(100)); obj.put("balance",new Double(1000.21)); obj.put("is_vip",new Boolean(true)); obj.put("nickname",null);

Page 42: JavaOne Brazil 2015: Java e HTML5

@RequestMapping(value="/contact/create.action") public @ResponseBody Map<String,? extends Object> create(@RequestBody ContactWrapper data) throws Exception {

try{

List<Contact> contacts = contactService.create(data.getData());

return ExtJSReturn.mapOK(contacts);

} catch (Exception e) {

return ExtJSReturn.mapError("Error trying to create contact."); } }

http://wiki.fasterxml.com/JacksonHome

Page 43: JavaOne Brazil 2015: Java e HTML5

@POST @Produces("application/json") @Consumes({"application/xml", "application/json"}) public ExtJSContactReturn create(String json) throws IOException, JSONException { ContactWrapper wrapper = new ContactWrapper(json); Contact entity = wrapper.getContact(); super.create(entity); List<Contact> contacts = new ArrayList<Contact>(); contacts.add(entity); ExtJSContactReturn extReturn = new ExtJSContactReturn(String.valueOf(contacts.size()), contacts, true); return extReturn; }

Page 44: JavaOne Brazil 2015: Java e HTML5

JsonBuilderFactory factory = Json.createBuilderFactory(config); JsonObject value = factory.createObjectBuilder() .add("firstName", "John") .add("lastName", "Smith") .add("age", 25) .add("address", factory.createObjectBuilder() .add("streetAddress", "21 2nd Street") .add("city", "New York") .add("state", "NY") .add("postalCode", "10021")) .add("phoneNumber", factory.createArrayBuilder() .add(factory.createObjectBuilder() .add("type", "home") .add("number", "212 555-1234")) .add(factory.createObjectBuilder() .add("type", "fax") .add("number", "646 555-4567"))) .build();

Page 45: JavaOne Brazil 2015: Java e HTML5

JSON JavaScript Object Notation

Page 46: JavaOne Brazil 2015: Java e HTML5
Page 47: JavaOne Brazil 2015: Java e HTML5
Page 48: JavaOne Brazil 2015: Java e HTML5

@ServerEndpoint("/chat") public class ChatBean {

Set<Session> peers = Collections.synchronizedSet(...); @OnOpen public void onOpen(Session peer) { peers.add(peer); }

@OnClose public void onClose(Session peer) { peers.remove(peer); }

@OnMessage public void message(String message, Session client) { for (Session peer : peers) { peer.getRemote().sendObject(message); } } }

Page 49: JavaOne Brazil 2015: Java e HTML5

http://async-io.org/

Page 50: JavaOne Brazil 2015: Java e HTML5

import org.atmosphere.config.service.ManagedService; import org.atmosphere.cpr.AtmosphereResponse; import org.atmosphere.handler.OnMessage;

@ManagedService(path = "/echo") public class Echo { @Message public void onMessage(AtmosphereResponse res, String m) { res.write("Echo: " + m); } }

$(function () { var request = { url: document.location.toString() + 'echo', transport : "websocket" , fallbackTransport: 'long-polling'};

request.onMessage = function (response) { console.log(response.responseBody) }; $.atmosphere.subscribe(request).push("Hello"); }

Page 51: JavaOne Brazil 2015: Java e HTML5

Demo

Page 52: JavaOne Brazil 2015: Java e HTML5
Page 53: JavaOne Brazil 2015: Java e HTML5
Page 54: JavaOne Brazil 2015: Java e HTML5
Page 55: JavaOne Brazil 2015: Java e HTML5
Page 56: JavaOne Brazil 2015: Java e HTML5
Page 57: JavaOne Brazil 2015: Java e HTML5
Page 58: JavaOne Brazil 2015: Java e HTML5

https://www.owasp.org

Page 59: JavaOne Brazil 2015: Java e HTML5

desabilitar código HTML desabilitar editar código fonte

Page 60: JavaOne Brazil 2015: Java e HTML5

http://jhipster.github.io/

Page 61: JavaOne Brazil 2015: Java e HTML5

http://loiane.com

fb.com/loianegroner

@loiane

https://github.com/loiane

youtube.com/user/Loianeg

Page 62: JavaOne Brazil 2015: Java e HTML5

Obrigada!