Um mundo Java sem XML
Victor Oliveira Nascimento - victor.olinasc
27 de Novembro, SP - iMasters
Configurações em Python e Erlang:

LGIG={
 OGN
   'eso' 1
    vrin: ,
   'ial_xsiglges:Fle
    dsbeeitn_ogr' as,
   'itr' {
    fles:
     'eur_eu_as' {
      rqiedbgfle:
       '):'jnouislgRqieeuFle
        (' dag.tl.o.eurDbgas'
     }
   }
}



[bs,[
 {os
   {ah ".Ciaoos}
    pt, ./hcgBs",
   {plctos [acr],
    apiain, bsoe}
   {suelcl,"n}
    asm_oae e"]
}]
Configurações em Java:

<en xls"tp/wwsrnfaeokogshm/en"
 bas mn=ht:/w.pigrmwr.r/ceabas
   xlsxi"tp/www.r/01XLceaisac"xlscnet"tp/wwsrnfaeokogshm
    mn:s=ht:/w.3og20/MShm-ntne mn:otx=ht:/w.pigrmwr.r/cea
   xlst=ht:/w.pigrmwr.r/ceat"xlsjb=ht:/w.pigrmwr.r/ceajb
    mn:x"tp/wwsrnfaeokogshm/x mn:dc"tp/wwsrnfaeokogshm/dc
   xishmLcto=ht:/w.pigrmwr.r/ceabas
    s:ceaoain"tp/wwsrnfaeokogshm/en
      ht:/w.pigrmwr.r/ceabassrn-en-..s
      tp/wwsrnfaeokogshm/en/pigbas31xd
      ht:/w.pigrmwr.r/ceacnet
      tp/wwsrnfaeokogshm/otx
      ht:/w.pigrmwr.r/ceacnetsrn-otx-..s"
      tp/wwsrnfaeokogshm/otx/pigcnet31xd>

   <otx:opnn-cnbs-akg=b.o.oceeouin"/
    cnetcmoetsa aepcae"rcmcnrtsltos >



   <encas"r.pcecmosdc.aiDtSuc"
    ba ls=ogaah.omn.bpBscaaore
      dsrymto=coe i=dtSuc"
       eto-ehd"ls" d"aaore>
      <rprynm=dieCasae vle"r.2Die"/
       poet ae"rvrlsNm" au=ogh.rvr >
      <rprynm=ul vle"dch:/bntrD; /
       poet ae"r" au=jb:2~d/auaB" >
      <rprynm=uenm"vle"a /
       poet ae"srae au=s" >
      <rprynm=pswr"vle"a /
       poet ae"asod au=s" >
   <ba>
    /en
<bas
 /en>
Qual o problema?



· Python: listas, tuplas, dicionários
· Ruby: listas, tuplas, dicionários
· Erlang: listas, tuplas, tuplas nomeadas
· Lisp: parênteses, parênteses, parênteses



· Java: XML??? Properties???
Nenhum problema! Annotations!

ipr jvxsrltSrltotxEet
 mot aa.eve.eveCnetvn;
ipr jvxsrltSrltotxLsee;
 mot aa.eve.eveCnetitnr
ipr jvxsrltantto.eLsee;
 mot aa.eve.noainWbitnr

@eLsee
 Wbitnr
pbi casLgigntaieFle ipeet SrltotxLsee {
 ulc ls ognIiilzritr mlmns eveCnetitnr

    @vrie
     Oerd
    pbi vi cnetetoe(eveCnetvn ag){
     ulc od otxDsrydSrltotxEet r0
    }

    @vrie
     Oerd
    pbi vi cnetntaie(eveCnetvn ag){
     ulc od otxIiilzdSrltotxEet r0
    }
}
Muita hora nessa calma!




· Apenas para configurações inerentes da aplicação



· Diferenças entre ambientes devem ser externalizadas
  para ferramentas que gerenciem os ambientes (Puppet,
  Juju?)
Algumas vantagens da abordagem


· Propriedades type-safe
· Habilidade de customizar a incialização dos frameworks
· Não depender das capacidades do namespace
· Evita conhecer novas semânticas
· Javadoc

Algumas desvantagens

· Configuração compilada (???)
Exemplo: WAR sem XML

· Spring 3.1
· Jersey 1.15
· Apache Shiro (segurança) 1.2.1
· Hibernate 4.1

Sem nada de:

· application-context.xml
· web.xml
· spring-security.xml
· persistence.xml
Aplicação de exemplo

https://github.com/victorolinasc/java-xml-free
Algumas das principais anotações e classes utilizadas:


 Nome                                                    Framework
 javax.servlet.annotation.WebListener                    Servlet 3.0
 org.springframework.web.WebApplicationInitializer       Spring Framework
                                                         3.1
 org.springframework.context.annotation.Configuration    Spring Framework
                                                         3.1
Obrigado :)

Contato:

· Victor Oliveira Nascimento
· victor.olinasc [arroba] gmail [ponto] com
· https://github.com/victorolinasc
· https://bitbucket.org/cs_victor_nascimento
Um Mundo Java Sem XML

Um Mundo Java Sem XML

  • 1.
    Um mundo Javasem XML Victor Oliveira Nascimento - victor.olinasc 27 de Novembro, SP - iMasters
  • 2.
    Configurações em Pythone Erlang: LGIG={ OGN 'eso' 1 vrin: , 'ial_xsiglges:Fle dsbeeitn_ogr' as, 'itr' { fles: 'eur_eu_as' { rqiedbgfle: '):'jnouislgRqieeuFle (' dag.tl.o.eurDbgas' } } } [bs,[ {os {ah ".Ciaoos} pt, ./hcgBs", {plctos [acr], apiain, bsoe} {suelcl,"n} asm_oae e"] }]
  • 3.
    Configurações em Java: <enxls"tp/wwsrnfaeokogshm/en" bas mn=ht:/w.pigrmwr.r/ceabas xlsxi"tp/www.r/01XLceaisac"xlscnet"tp/wwsrnfaeokogshm mn:s=ht:/w.3og20/MShm-ntne mn:otx=ht:/w.pigrmwr.r/cea xlst=ht:/w.pigrmwr.r/ceat"xlsjb=ht:/w.pigrmwr.r/ceajb mn:x"tp/wwsrnfaeokogshm/x mn:dc"tp/wwsrnfaeokogshm/dc xishmLcto=ht:/w.pigrmwr.r/ceabas s:ceaoain"tp/wwsrnfaeokogshm/en ht:/w.pigrmwr.r/ceabassrn-en-..s tp/wwsrnfaeokogshm/en/pigbas31xd ht:/w.pigrmwr.r/ceacnet tp/wwsrnfaeokogshm/otx ht:/w.pigrmwr.r/ceacnetsrn-otx-..s" tp/wwsrnfaeokogshm/otx/pigcnet31xd> <otx:opnn-cnbs-akg=b.o.oceeouin"/ cnetcmoetsa aepcae"rcmcnrtsltos > <encas"r.pcecmosdc.aiDtSuc" ba ls=ogaah.omn.bpBscaaore dsrymto=coe i=dtSuc" eto-ehd"ls" d"aaore> <rprynm=dieCasae vle"r.2Die"/ poet ae"rvrlsNm" au=ogh.rvr > <rprynm=ul vle"dch:/bntrD; / poet ae"r" au=jb:2~d/auaB" > <rprynm=uenm"vle"a / poet ae"srae au=s" > <rprynm=pswr"vle"a / poet ae"asod au=s" > <ba> /en <bas /en>
  • 4.
    Qual o problema? ·Python: listas, tuplas, dicionários · Ruby: listas, tuplas, dicionários · Erlang: listas, tuplas, tuplas nomeadas · Lisp: parênteses, parênteses, parênteses · Java: XML??? Properties???
  • 5.
    Nenhum problema! Annotations! iprjvxsrltSrltotxEet mot aa.eve.eveCnetvn; ipr jvxsrltSrltotxLsee; mot aa.eve.eveCnetitnr ipr jvxsrltantto.eLsee; mot aa.eve.noainWbitnr @eLsee Wbitnr pbi casLgigntaieFle ipeet SrltotxLsee { ulc ls ognIiilzritr mlmns eveCnetitnr @vrie Oerd pbi vi cnetetoe(eveCnetvn ag){ ulc od otxDsrydSrltotxEet r0 } @vrie Oerd pbi vi cnetntaie(eveCnetvn ag){ ulc od otxIiilzdSrltotxEet r0 } }
  • 6.
    Muita hora nessacalma! · Apenas para configurações inerentes da aplicação · Diferenças entre ambientes devem ser externalizadas para ferramentas que gerenciem os ambientes (Puppet, Juju?)
  • 7.
    Algumas vantagens daabordagem · Propriedades type-safe · Habilidade de customizar a incialização dos frameworks · Não depender das capacidades do namespace · Evita conhecer novas semânticas · Javadoc Algumas desvantagens · Configuração compilada (???)
  • 8.
    Exemplo: WAR semXML · Spring 3.1 · Jersey 1.15 · Apache Shiro (segurança) 1.2.1 · Hibernate 4.1 Sem nada de: · application-context.xml · web.xml · spring-security.xml · persistence.xml
  • 9.
    Aplicação de exemplo https://github.com/victorolinasc/java-xml-free Algumasdas principais anotações e classes utilizadas: Nome Framework javax.servlet.annotation.WebListener Servlet 3.0 org.springframework.web.WebApplicationInitializer Spring Framework 3.1 org.springframework.context.annotation.Configuration Spring Framework 3.1
  • 10.
    Obrigado :) Contato: · VictorOliveira Nascimento · victor.olinasc [arroba] gmail [ponto] com · https://github.com/victorolinasc · https://bitbucket.org/cs_victor_nascimento