segunda-feira, 16 de janeiro de 2017

Tagged under:

JVM Links (#02)




1. Linguagens da JVM: Kotlin

=> O Ivan Queiroz lançou mais um post no seu blog dessa vez mostrando um pouquinho da Linguagem Kotlin que foi desenvolvida pela galera da JetBrains e tem ganhando bastante espaço no mundo mobile para o desenvolvimento de aplicações Android. Se você acha que JVM é somente Java vale apena ler esse post e acompanhar as novidades que vem por aí!

link: http://blog.ivanqueiroz.com/2017/01/linguagens-jvm-kotlin.html

2. VAMOS FALAR DE PADRÕES NOSQL [Q&A]

=> Post do Otávio Santana explicando o valor da especificação JNOSQL, se você curti bancos de dados NoSQL ou ta curioso sobre eles vale apena ler. [E tá valendo apena também enviar seu trabalho para o NoSQL-BA](http://javabahia.blogspot.com.br/2017/01/abertas-as-chamadas-de-trabalho-para-o.html) que está vai acontecer em Março aqui em Salvador. O Evento conta com a participação da propria especificação JNOSQL e de algumas comunidades do estado como: JavaBahia, PythonBA e GDGSSA.

link: https://otaviojava.wordpress.com/2017/01/12/jnosql_q__a/

3. Spring Security, Spring JPA e o JAVAEE

=> Semana passada um amigo me perguntou se eu já tinha utilizado o Spring Secuirty em projetos JavaEE, falei que sim e ele me perguntou como se fazia essa junção (quem trabalha com JavaEE está mais acostumado a utilizar a espeficicação JAAS em projetos). Aconte que o Alberto Souza já fez um texto muito bom explicando esse processo, recomendo leitura.

link: https://domineospring.wordpress.com/2015/07/27/spring-security-spring-jpa-e-o-javaee/

4. Java 8 Streams API: Manipulando coleções de forma eficiente

=> Ainda está passando por dificuldades para entender a API Streams do Java 8? Então tire um tempinho para da uma lida nesse texto do Carlos Alberto.

link: http://www.devmedia.com.br/java-8-streams-api-manipulando-colecoes-de-forma-eficiente/37630

5. Autenticação REST OAuth2 em Java com Apache Oltu

=> João Paulo Sossoloti fez um post muito interessante no blog da Caelum falando sobre autenticação REST OAuth2, aplicações REST estão em alta hoje em dia, entender como funciona OAuth2 é muito importante para a segurança de suas aplicações. Se você está estudando REST ou planeja aprender REST ler esse texto é uma boa porta de entrada.

link: http://blog.caelum.com.br/autenticacao-rest-oauth2-em-java-com-apache-oltu

BÔNUS. Vindo morar e estudar na Irlanda

=> Nesse texto Willian Justen nós conta como é morar fora do Brasil e como isso pode te ajudar a estudar, o legal desse texto é que você pode ver como o inglês influencia o dia a dia de um desenvolvedor.

link: https://willianjusten.com.br/vindo-morar-e-estudar-na-irlanda/

sexta-feira, 13 de janeiro de 2017

Tagged under:

Abertas as chamadas de trabalho para o NoSQL-BA




Os banco de Dados NOSQL (not only SQL) foram criados, principalmente, para resolver problemas com aplicações web que precisam operar com gigantescas cargas de dados além de poder escalar com grande facilidade. Esses tipos de banco de dados vem sendo usados com muita frequência em redes sociais como Twiter, Facebook, além de persistência em aplicações nas nuvens. Outro ponto importante a citar é a crescente adoção destas novas tecnologias, inclusive em mercados mais conservadores, tais como instituições financeiras e agências governamentais, seus motivos são diversos normalmente para solucionar problemas com flexibilidade, escalabilidade, latência e performance. Para demonstrar, compartilhar essas tecnologias foi criado o evento NOSQL-BA.


O evento está procurando pessoas que desejam compartilhar experiências, falar de cases de sucessos, apresentar tecnologias etc. relacionado ao tema NOSQL.
  • Palestra: Palestra normal do evento
  • Debate: Discussão com até quatro palestrantes
  • Mini Palestra: Apresentação de 15 minutos
  • Workshop: Um mini-curso (4 horas).
O prazo de envio é até 27 de Janeiro, sexta-feira.
O evento acontecerá em Salvador entre os dias 30 de março até o dia 1 de abril em Salvador, em breve mais informações:


segunda-feira, 9 de janeiro de 2017

Tagged under:

JVM Links (#01)






1. Java 8
=> Revisando Padrões com Java 8: O Padrão Strategy (Um excelente post do Ivan que além de explicar como se trabalhar com o Padrão de projeto Strategy, também explicou muito bem como funciona lambdas e strems do Java 8)
=> Evolução Java (JVM, JDK) 1.4 -> 1.9 (Popete [Antonio Lazaro] começou a blog, tô muito feliz com isso porque esse é um cara com muita experiência para passar! E nesse post ele nos mostra a evolução da JVM desde a versão 1.4 até a nova versão 1.9 que esta para ser lançada, Popete consegue explicar as características de uma forma muito simples. Um post muito util para aprender mais sobre a JVM e como referência)
=> Java 8: Lambda ou method reference? Entenda a diferença (Lucas Romão fez um post muito legal no blog da caleum falando quando escolher por usar lambda ou method reference, esse post é um excelente complemento para o que o Ivan postou por isso recomendo a sua leitura depois do Revisando Padrões com Java 8)

2. Cursos
=> Orientação a Objetos com Java (Para aqueles que estão dando os primeiros passos no mundo do OO, o coursera esta para começar nova sessão do seu curso. O objetivo deste curso é fazer você compreender os princípios de orientação a objetos por meio da linguagem Java e saber como eficientemente aplicar esses princípios na prática quando projetando e desenvolvendo software de maneira ágil. Os conceitos discutidos e experimentados por você neste curso serão a base para você poder compreender os novos conceitos apresentados nos cursos seguintes desta especialização.)

quarta-feira, 4 de janeiro de 2017

Tagged under: , , , ,

Evolução Java (JVM, JDK) 1.4 -> 1.9





Esse post foi originalmente criado no meu blog pessoal e adaptei para cá, trazendo o resultado da enquete de uso da JDK que rodei no Twitter.

A idéia desse post é apresentar um pouco dos recursos a cada nova release do JDK. Posteriormente, pretendo abordar como a JVM evoluiu e suporta outras linguagens além do Java.
Irei apresentar os novos recursos a cada release para que possamos relembrar o que foi adicionado e ao mesmo tempo façamos uma reflexão. "Com tantos novos recursos, por que uma parte de nós continuamos com códigos feitos com recursos da versão 1.4 e 1.5?"

Com mais tempo, pretendo escrever sobre alguns recursos das versões 7, 8 e 9. Levantei uma pesquisa no Twitter para saber o que a galera tem usado e até o momento (a pesquisa não acabou, se não votou, participe clicando aqui), o JDK 8 está vencendo a corrida. Não coloquei a versão 1.4 na pesquisa, porque o Twitter suporta apenas 4 itens por enquete e assumi que é algo bastante velho, mas confesso que tenho curiosidade de saber sobre o tema.


J2SE 1.4

Características:
  • Codename: Merlin
  • Release date: 06/02/2002
  • Public support and security updates: Até outubro de 2008
  • Private support and security updates: Até fevereiro de 2013
  • Mudanças na plataforma:
  • assert keyword (specified in JSR 41)
  • Regular expressions modeled after Perl regular expressions
  • Exception chaining allows an exception to encapsulate original lower-level exception
  • Internet Protocol version 6 (IPv6) support
  • Non-blocking IO (named New Input/Output, NIO) (specified in JSR 51)
  • Logging API (specified in JSR 47)
  • Image I/O API for reading and writing images in formats like JPEG and PNG
  • Integrated XML parser and XSLT processor (JAXP) (specified in JSR 5 and JSR 63)
  • Integrated security and cryptography extensions (JCE, JSSE, JAAS)
  • Java Web Start included (Java Web Start was first released in March 2001 for J2SE 1.3) (specified in JSR 56)
  • Preferences API (java.util.prefs)

J2SE 5.0

Nessa release (inicialmente numerada com J2SE 1.5) foi definida uma mudança na nomenclatura do número da versão para melhor refletir o nível de maturidade, estabilidade, escalabilidade e segurança do J2SE.
Essa foi a última release que foi recebeu suporte oficial das versões 98 e ME do Windows. Essa release também foi a última a suportar o Windows 95 e NT 4.0.
Essa versão foi disponibilizada no Apple Mac OS X 10.4 (Tiger) e foi a versão default do Apple Mac OS X 10.5 (Leopard).
Essa foi uma release onde o Java (linguagem) recebeu suporte a novos recursos, esses bastante importante e revolucionários, como podemos destacar: Generics, Metadata (annotations), Enumerations, for each e static imports.
Características:
  • Codename: Tiger
  • Release date: 30/09/2004
  • Difference date from the latest release: 2 years, 7 months, 24 days
  • Public support and security updates: 03/11/2009
  • Private support and security updates: 05/2015
  • Mudanças na plataforma:
  • Generics: provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion) (specified by JSR 14)
  • Metadata: also called annotations; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities (specified by JSR 175)
  • Autoboxing/unboxing: automatic conversions between primitive types (such as int) and primitive wrapper classes (such as Integer) (specified by JSR 201)
  • Enumerations: the enum keyword creates a typesafe, ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.); previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern) (specified by JSR 201)
  • Varargs: the last parameter of a method can now be declared using a type name followed by three dots (e.g. void drawtext(String... lines)); in the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type
  • Enhanced for each loop: the for loop syntax is extended with special syntax for iterating over each member of either an array or any Iterable, such as the standard Collection classes (specified by JSR 201)
  • Improved semantics of execution for multi-threaded Java programs; the new Java memory model addresses issues of complexity, effectiveness, and performance of previous specifications[17]
  • Static imports There were also the following improvements to the standard libraries:
  • Automatic stub generation for RMI objects
  • Swing: New skinnable look and feel, called synth
  • The concurrency utilities in package java.util.concurrent[18]
  • Scanner class for parsing data from various input streams and buffers

Java SE 6

A partir dessa release a versão do Java mudou o padrão de nomenclatura definitivamente. A grande maioria das mudanças foram internas na JVM, não havendo tantas mudanças na linguagem Java, mas a partir dessa release foi adicionado o suporte a linguagens de scripts na JVM (JSR 223). Esse é o tema que pretendo abordar em outro post, mas é bem interessante saber que a JVM roda mais de 50 linguagens nos dias atuais.
Características:
  • Codename: Mustang
  • Release date: 11/12/2006
  • Difference date from the latest release: 2 years, 2 months, 11 days
  • Public support and security updates: 02/2013
  • Private support and security updates: 12/2018
  • Mudanças na plataforma:
  • Support for older Win9x versions dropped; unofficially, Java 6 Update 7 was the last release of Java shown to work on these versions of Windows.[citation needed]This is believed[by whom?] to be due to the major changes in Update 10.
  • Scripting Language Support (JSR 223): Generic API for tight integration with scripting languages, and built-in Mozilla JavaScript Rhino integration.
  • Dramatic performance improvements for the core platform,[27][28] and Swing.
  • Improved Web Service support through JAX-WS (JSR 224).
  • JDBC 4.0 support (JSR 221).
  • Java Compiler API (JSR 199): an API allowing a Java program to select and invoke a Java Compiler programmatically.
  • Upgrade of JAXB to version 2.0: Including integration of a StAX parser.
  • Support for pluggable annotations (JSR 269).[29]
  • Many GUI improvements, such as integration of SwingWorker in the API, table sorting and filtering, and true Swing double-buffering (eliminating the gray-area effect).
  • JVM improvements include: synchronization and compiler performance optimizations, new algorithms and upgrades to existing garbage collection algorithms, and application start-up performance.

Java SE 7

Em 2010, a Oracle comprou a Sun Microsystems (empresa que era responsável pelo Java) por aproximadamente US$ 7.4 bilhões. A partir dessa data a JDK passou a ser desenvolvida sob o projeto Open JDK. Algumas evoluções na linguagem Java foram adicionadas e melhorias na API de IO e concorrência foram as principais novidades dessa versão.
Características:
  • Codename: Dolphin
  • Release date: 07/2011
  • Difference date from the latest release: 4 years, 6 months, 20 days
  • Public support and security updates: 03/2014
  • Private support and security updates: 07/2022
  • Mudanças na plataforma:
  • JVM support for dynamic languages, with the new invokedynamic bytecode under JSR-292,[115] following the prototyping work currently done on the Multi Language Virtual Machine
  • Compressed 64-bit pointers[116] (available in Java 6 with -XX:+UseCompressedOops)[117]
  • JDBC 4.1
  • Concurrency utilities under JSR 166[126]
  • New file I/O library (defined by JSR 203) adding support for multiple file systems, file metadata and symbolic links. The new packages are java.nio.file, java.nio.file.attribute and java.nio.file.spi[127][128]
  • Timsort is used to sort collections and arrays of objects instead of merge sort
  • Library-level support for elliptic curve cryptography algorithms
  • An XRender pipeline for Java 2D, which improves handling of features specific to modern GPUs
  • New platform APIs for the graphics features originally implemented in version 6u10 as unsupported APIs[129]
  • Enhanced library-level support for new network protocols, including SCTP and Sockets Direct Protocol
  • Upstream updates to XML and Unicode
  • Java Deployment Rulesets[130]
  • These small language changes (grouped under a project named Coin):[118]
  • Strings in switch[119]
  • Automatic resource management in try-statement[120]
  • Improved type inference for generic instance creation, aka the diamond operator <>[121]
  • Simplified varargs method declaration[122]
  • Binary integer literals[123]
  • Allowing underscores in numeric literals[124]
  • Catching multiple exception types and rethrowing exceptions with improved type checking[125]

Java SE 8

Evoluções revolucionárias na JVM desde a versão 5 vieram com essa release. Suporte a programação funcional com uso de expressões lambdas.
Essa release não é suportada no Windows XP (antes da relase update 25).
Características:
  • Codename: Kenai
  • Release date: 18/03/2014
  • Release atual:: JDK 8 update 111
  • Difference date from the latest release: 2 years, 8 months, 17 days
  • Public support and security updates: 09/2017
  • Private support and security updates: 03/2025
  • Mudanças na plataforma:
  • JSR 335, JEP 126: Language-level support for lambda expressions (officially, lambda expressions; unofficially, closures) under Project Lambda[196] and default methods (virtual extension methods)[197][198][199] which allow the addition of methods to interfaces without breaking existing implementations. There was an ongoing debate in the Java community on whether to add support for lambda expressions.[200][201] Sun later declared that lambda expressions would be included in Java and asked for community input to refine the feature.[202] Supporting lambda expressions also allows the performance of functional-style operations on streams of elements, such as MapReduce-inspired transformations on collections. Default methods allow an author of an API to add new methods to an interface without breaking the old code using it. Although it was not their primary intent,[197] default methods also allow multiple inheritance of behavior (but not state).
  • JSR 223, JEP 174: Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within applications
  • JSR 308, JEP 104: Annotation on Java Types[203]
  • Unsigned Integer Arithmetic[204]
  • JSR 337, JEP 120: Repeating annotations[205]
  • JSR 310, JEP 150: Date and Time API[206]
  • JEP 178: Statically-linked JNI libraries[207]
  • JEP 153: Launch JavaFX applications (direct launching of JavaFX application JARs)[208]
  • JEP 122: Remove the permanent generation[209]

Java SE 9

O lançamento estava previsto para 22/09/2016. A Oracle mudou para 23/03/2017 e depois anunciou que seria julho/2017. A principal complexidade que vem gerando o atraso tem relação com a modularização da JVM (projeto Jig Saw).
Características:
  • Codename: Não definido
  • Release date: 07/2017 (Previsão)
  • Difference date from the latest release: 3 years, 3 months, 13 days **(se concluído de fato em julho/2017).
  • Public support and security updates: TBD (to be defined)
  • Private support and security updates: TBD (to be defined)
  • Mudanças na plataforma:
  • JSR 376: Modularization of the JDK under Project Jigsaw (Java Module System)[132][243][244]
  • JEP 222: jshell: The Java Shell (a Java REPL)[245][246]
  • JEP 295: Ahead-of-Time Compilation[247]
  • JEP 268: XML Catalogs[248]
Encontrei essa figura que mostra a divisão por categorias dos recursos.
enter image description here fonte: https://blogs.oracle.com/java/jdk-9-categories

Fontes

Links:
  • https://blogs.oracle.com/java/jdk-9-categories
  • https://en.wikipedia.org/wiki/Javaversionhistory
  • http://javapapers.com/core-java/java-features-and-history/
  • http://www.theregister.co.uk/2016/09/14/jdk9release_delay/
  • http://www.oracle.com/technetwork/java/eol-135779.html
  • http://openjdk.java.net/projects/jdk7/features/
  • http://openjdk.java.net/projects/jdk8/features
  • http://openjdk.java.net/faq/
  • http://openjdk.java.net/projects/jdk6/
  • http://openjdk.java.net/projects/jdk7/
  • http://openjdk.java.net/projects/jdk8/spec/
  • http://openjdk.java.net/projects/jdk9/spec/
  • http://openjdk.java.net/projects/jdk10/
Tagged under: , ,

Revisando Padões com Java 8: O Padrão Strategy

Publicado originalmente em: http://blog.ivanqueiroz.com/2017/01/revisando-padroes-java-8-o-padrao-strategy.html

Esse post será o início de uma série o qual vou tentar explicar os padrões de projeto utilizando as novidades do Java 8, se visitou esse assunto espero que já conheça os conceitos de orientação a objetos, a linguagem java e Padrões de Projeto.

"O conceito de estratégia, em grego strateegia, em latim strategi, em francês stratégie..." 
Capitão Nascimento (Filme Tropa de Elite).


Strategy

É um padrão comportamental utilizado quando uma classe possui muitos algoritmos que tem o mesmo propósito e que podem ser alternados na lógica da aplicação. A execução do algoritmo fica sob responsabilidade de uma instância que compõe a classe principal.


Aplicabilidade

Use o padrão Strategy quando:
  • muitas classes relacionadas diferem somente no seu comportamento. As estratégias fornecem uma maneira de configurar uma classe comum dentre muitos comportamentos;
  • você necessita de variantes de um algoritmo. Por exemplo, pode definir algoritmos que refletem diferentes soluções de compromisso entre espaço/ tempo. As estratégias podem ser usadas quando essas variantes são implementadas como uma hierarquia de classes de algoritmos;
  • um algoritmo usa dados dos quais os clientes não deveriam ter conhecimento. Use o padrão Strategy para evitar a exposição das estruturas de dados complexas, específicas do algoritmo;
  • uma classe define muitos comportamentos, e estes aparecem em suas operações como múltiplos comandos condicionais da linguagem. Em vez de usar muitos comandos condicionais, mova os ramos condicionais relacionados para a sua própria classe Strategy.

Implementação

Para exemplo criei uma classe AgenteSecreto que irá consumir os algoritmos de estratégia, possui um método que executa a ação (no caso combater) e outro método que muda a estratégia em tempo de execução:


public class AgenteSecreto { private EstrategiaAgente estrategia; public AgenteSecreto(EstrategiaAgente estrategia) { this.estrategia = estrategia; } public void mudarEstrategia(EstrategiaAgente estrategia) { this.estrategia = estrategia; } public void combater() { estrategia.executar(); }
} 
A interface que define o algoritmo de execução:

public
interface EstrategiaAgente { public void executar();
}

Criei três implementações da interface com os algoritmos: EstrategiaEngenhariaEstrategiaLinhaDeFrente e EstrategiaSuporte. Agora vamos a Implementação do programa.

Antes do Java 8

Após definir a interface que encapsula o algoritmo só precisamos instanciar a estratégia que queremos utilizar, passando por construtor para a classe AgenteSecreto ou chamando o método mudarEstrategia():
LOGGER.info("Inimigos localizados dentro do forte!"); AgenteSecreto agente = new AgenteSecreto(new EstrategiaLinhaDeFrente()); agente.combater(); LOGGER.info("Inimigos efetuando disparos!"); agente.mudarEstrategia(new EstrategiaEngenharia()); agente.combater(); LOGGER.info("Equipe sendo alvejada!"); agente.mudarEstrategia(new EstrategiaSuporte()); agente.combater();

Após o Java 8

A partir do Java 8 e o suporte a programação funcional, podemos utilizar novas sintaxes para alterar os algoritmos.

Lambdas

Com o suporte a Lambdas, podemos "passar" a implementação do algoritmo diretamente para o construtor de AgenteSecreto ou ao método mudarEstrategia():
LOGGER.info("Java 8 Lambdas"); LOGGER.info("Inimigos localizados dentro do forte!"); agente = new AgenteSecreto(() -> LOGGER.info("Segurar escudo e invadir.")); agente.combater(); LOGGER.info("Inimigos efetuando disparos!"); agente.mudarEstrategia(() -> LOGGER.info("Armar torreta, jogar granadas de efeito e plantar minas.")); agente.combater(); LOGGER.info("Equipe sendo alvejada!"); agente.mudarEstrategia(()-> LOGGER.info("Esperar feridos e ajudar.")); agente.combater();
A vantagem dessa abordagem é de não termos que criar uma classe para algoritmos pequenos, diminuindo o número de classes do projeto.

Referência a métodos

Outra facilidade da programação funcional do Java 8 é o de referenciar métodos ou o chamado Method Reference, essa facilidade é interessante quando a expressão lâmbda chama métodos já existentes, para exemplo criei em cada implementação de estratégia um método estático que realiza em si a ação requerida, com isso é possível utilizar a sintaxe do method reference e "passar" os métodos diretamente para o AgenteSecreto:
LOGGER.info("Java 8 Method References"); LOGGER.info("Inimigos localizados dentro do forte!"); agente.mudarEstrategia(EstrategiaLinhaDeFrente::combaterComoLinhaDeFrente); agente.combater(); LOGGER.info("Inimigos efetuando disparos!"); agente.mudarEstrategia(EstrategiaEngenharia::combaterComoEngenheiro); agente.combater(); LOGGER.info("Equipe sendo alvejada!"); agente.mudarEstrategia(EstrategiaSuporte::combaterComoSuporte); agente.combater();
Essa abordagem é interessante para os casos em que temos expressões lambda que apenas chamam outros métodos. Com ela deixamos o código mais legível além de chamarmos diretamente o método de ação.

Executando

Ao executarmos a aplicação temos o seguinte resultado:
padroes.strategy.Aplicacao - Inimigos localizados dentro do forte! padroes.strategy.EstrategiaLinhaDeFrente - Segurar escudo e invadir. padroes.strategy.Aplicacao - Inimigos efetuando disparos! padroes.strategy.EstrategiaEngenharia - Armar torreta, jogar granadas de efeito e plantar minas. padroes.strategy.Aplicacao - Equipe sendo alvejada! padroes.strategy.EstrategiaSuporte - Esperar feridos e ajudar. padroes.strategy.Aplicacao - Java 8 Lambdas padroes.strategy.Aplicacao - Inimigos localizados dentro do forte! padroes.strategy.Aplicacao - Segurar escudo e invadir. padroes.strategy.Aplicacao - Inimigos efetuando disparos! padroes.strategy.Aplicacao - Armar torreta, jogar granadas de efeito e plantar minas. padroes.strategy.Aplicacao - Equipe sendo alvejada! padroes.strategy.Aplicacao - Esperar feridos e ajudar. padroes.strategy.Aplicacao - Java 8 Method References padroes.strategy.Aplicacao - Inimigos localizados dentro do forte! padroes.strategy.EstrategiaLinhaDeFrente - Segurar escudo e invadir. padroes.strategy.Aplicacao - Inimigos efetuando disparos! padroes.strategy.EstrategiaEngenharia - Armar torreta, jogar granadas de efeito e plantar minas. padroes.strategy.Aplicacao - Equipe sendo alvejada! padroes.strategy.EstrategiaSuporte - Esperar feridos e ajudar.

Vantagens e desvantagens do Strategy

Em outras fontes você irá encontrar diversas vantagens e desvantagens sobre o padrão, para mim as principais vantagens são:
  • criar novos algoritmos com modificações mínimas da aplicação;
  • poder alterar os algoritmos em tempo de execução;
  • diminuição de estruturas condicionais na classe cliente.
Já as desvantagens:
  • aumento no número de classes;
  • aumento na complexidade de criação do objeto, já que a instância da dependência precisa ser criada e configurada.

Finalizando

Na versão 8 a linguagem Java trouxe ótimas novidades que ajudam bastante no desenvolvimento de soluções de código mais simples e legíveis. O suporte a programação funcional trás um novo paradigma para os desenvolvedores que utilizam a linguagem, cabe a nós avaliar e escolher a melhor forma de aproveitá-la. Um forte abraço e até a próxima.

Código no Github

Créditos

sábado, 31 de dezembro de 2016

Tagged under: , , ,

Retrospectiva 2016 - Comunidade Java Bahia

Hoje, 31/12, também conhecido como último dia do ano de 2016, escreverei sobre o trabalho do Java Bahia em 2016.

O grupo estava pouco movimentado, em relação a atividades junto a comunidade, nos últimos meses (anos?), então isso gerou uma inquietação em nosso amigo Mateus Malaquias que entrou em contato com Otávio Santana e perguntou como poderia participar da comunidade e como movimentar. Por sugestão de Otávio, Mateus começou a escrever uns posts sobre JPA (assunto que ele estava estudando na época). Foram dois posts, um apresentando a JPA e outro mostrando vantagens e desvantagens no uso do JPA.

Entre 28 e 30/06, aconteceu o Java One Latin America. E por coincidência do destino, eu encontrei Jefferson Moreira lá no evento. Lá, tivemos diversos contatos com pessoas da comunidade e em um determinado momento, Jefferson questionou Otávio, o porque do grupo de Salvador/Bahia estar tão parado. Otávio devolveu o questionamento perguntando o que Jefferson estava fazendo para movimentar o grupo. Então, ele percebeu que a comunidade é composta por pessoas e essas pessoas que devem fazer as coisas acontecer. No retorno do Java One, Jefferson, a professora Marla Dore (Faculdade Unijorge), juntamente com Mateus organizaram um encontro da comunidade Java que aconteceu em 27.08 com a participação via Skype de Otávio. Jefferson conversou comigo e pediu para eu fazer uma palestra sobre carreiras nesse mesmo evento. Fizemos esse evento e o feedback dos estudantes e participantes foi muito positivo, então decidimos repetir esse evento em outras universidades, acreditando que precisávamos levar essa mensagem a comunidade baiana.

Em setembro, fomos a Faculdade FTC de Feira, e depois na Faculdade Ruy Barbosa. A partir de setembro, se juntou ao nosso grupo, Ivan Queiroz que preparou um evento sobre Spring Data (que em minha opnião ficou excelente!). Ivan estava estudando Spring para um projeto e compartilhou o que ele aprendeu com a comunidade. Ele mostrou interesse em participar, logo após o evento da Unijorge, disse que gostou e queria ajudar.

Entramos em contato com coordenadores de diversas faculdades e conseguimos levar os eventos a outras instituições:

  1. Unifacs 
  2. III Simpósio de Tecnologia de Informação da Faculdade Visconde de Cairu 
  3. IV Ucsal Talks na Universidade Católica do Salvador (UCsal)
  4. II Semana De Ciências, Tecnologia E Sustentabilidade Da Unime
  5. Ufba
Nosso objetivo inicial era perceber a resposta da comunidade a eventos e qual expectativa das pessoas em relação aos eventos. Tivemos alguns aprendizados que nos ajudarão a direcionar em 2017 nossos esforços para continuar compartilhando conhecimento.

Os links para visualizar as apresentações usadas nos eventos de 2016 estão disponíveis aqui

Infelizmente, 2016 foi um ano que a comunidade Java sofreu uma grande perda. Em  novembro, faleceu Daniel de Oliveira (fundador do DFJug) e Serge Rehem escreveu uma mensagem muito bonita em homenagem a ele. Nesse post Serge fala sobre amizade e sobre como somos fortes quando temos amigos ao nosso lado, além de falar sobre o papel de Daniel junto a comunidade. 

O Sou Java também prestou homenagem a Daniel nesse post. Em uma ação de união e prova de amizade ("vamos ser invencíveis?"). Foi criado um site onde foi possível fazer doações para que a esposa de Daniel (Luci) tivesse um suporte para voltar ao Brasil (ele estava morando em Londres). Link para o site.


A nossa atual meta é retomar as atividades do grupo após o carnaval e durante esse período preparar conteúdo e fazer novos contatos com pessoas que demonstraram interesse em palestrar. 

A principal mensagem de 2016 é que nós temos o poder de movimentar a comunidade, reclamamos que não acontece nada em Salvador/Bahia, mas as poucas vezes que acontecem a participação não é expressiva (embora quem participe, fique até o fim do evento e dê feedbacks bastante positivos).

Esse foi o balanço do ano de 2016, onde tivemos muito aprendizado, uma grande perda, e muito trabalho. Esperamos que todos tenham um excelente ano de 2017, com muita saúde, paz e inspiração. Mais amor e respeito entre as pessoas para que possamos aproveitar um mundo melhor, com menos intolerância e violência.

Agradecemos a todos que nos apoiaram e que participaram em fazer nossa comunidade mais forte. E não deixem de nos acompanhar nos nossos canais. A comunidade é uma rede de pessoas e esperamos que mais pessoas entrem na jornada...







segunda-feira, 5 de dezembro de 2016

Tagged under: , , , , ,

Última atividade Java Bahia 2016 - Encerrando tour na Ufba (17/12 - 09:00)

Encerrando tour nas universidades baianas encerramos nosso ciclo de palestras para voltarmos a movimentar a comunidade no dia 10/12 17/12 (houve uma mudança na data) na Universidade Federal da Bahia, no auditório do instituto de matemática (Ondina).

Essa será nossa última palestra de 2016. Em 2017 retomaremos nossas atividades.


O evento está marcado para iniciar as 9h e terá o seguinte roteiro:

  • Java User Group – O que é e como eu posso participar? - Jefferson Moreira
  • Carreira do desenvolvedor Java: O que eu preciso saber? - Antônio Lázaro
  • Spring Data - Ivan Queiroz
  • Encerramento - Neste momento temos um espaço aberto para você contribuir e falar o que quiser!!

O evento será aberto a comunidade, e as inscrições devem ser feitas via plataforma meetup. Mais informações no site do JavaBahia:
Inscrições no meetup: https://www.meetup.com/Java-Bahia/events/236058547/
Contatos: