quarta-feira, 28 de dezembro de 2016

Compiladores online de programação

Hoje trouxe para vocês alguns websites que oferecem a facilidade de compilar e rodar seu código com suporte para Java (e outras linguagens), são muito uteis, para testes, estudos, etc. Segue abaixo um pouco sobre cada um deles.

Ideone 

É um compilador e ferramenta de debugging online.
Você pode escrever seu código no seu editor local (ou no próprio site). Em seguida, pode escolher entre mais de 60 linguagens de programação, para compilar e rodar seu trabalho.
Mesmo tendo aparência simples, possui syntax highlighting também e permite compartilhar fácil o seu código,.
Confira aqui: http://ideone.com/

OnlineCompiler

Com opções de linguagens de programação limitadas a C/C++, FORTRAN, Java, Pascal e Basic, permite compilar e baixar o seu executável — para Windows ou Linux. Na minha humilde opnião acho ele meio ruinzinho, mas compila, então está valendo.
Confira aqui: http://www.onlinecompiler.net/

Repl.it

Com suporte a 30 linguagens de programação, o Replit é um trabalho de uma equipe pequena, porém muito bem feito.
O Replit Classroom é uma ferramenta, dentro do site, voltada para professores. Com ela, se cria uma “sala de aula”, para ensinar programação para quantos estudantes se quiser.
O editor permite configuração da identação e de seu visual. Possui 2 opções de tema (clara/escura).
Para a função de compartilhamento de código tem que fazer cadastro. Gosto bastante desse.
Confira o site aqui: https://repl.it/


RemoteInterview


Com uma interface limpa, 2 opções de tema (clara/escura, também) e mais de 20 opções de linguagens de programação (entre as mais populares), o RemoteInterview tem a concepção de ser um site de “entrevista” para a contratação de programadores, onde o profissional pode mostrar seu conhecimento etc.
A interface é eficiente e tem opções de teclas de atalho, que simulam os editores Vim, Sublime e Emacs. Se você já estiver acostumado com um deles, este local pode ser de grande produtividade para você.
O RemoteInterview também tem a funcionalidade de pastebin, para compartilhar seu código em fóruns, chats, nas redes sociais etc. E na minha opinião é um dos melhores.
Confira o site aqui: https://codepad.remoteinterview.io/.


CodeChef IDE

O CodeChef aceita código em mais de 35 linguagens.
Antes de tudo, é um site de competição para programadores. Você pode pegar um dos desafios da competição ou praticar nos diversos níveis disponíveis (beginner, easy, medium, hard, challenge e peer).
Seu editor de textos permite configurar a indentação e escolher entre mais de 30 temas (inclusive, com fundos escuros, para quem trabalha à noite).
Além disto, a IDE oferece recursos como atalhos de teclado — que facilitam enormemente quando o trabalho é grande.
Por exemplo, não precisa rolar a tela para baixo e clicar no botão “Run” para compilar e rodar o código. Nem precisa tirar a mão do teclado. As teclas ‘Ctrl + Enter’, fazem isto.
Há mais de 80 atalhos de teclado e isto, com certeza, é um bom motivo para usar o editor.
Link para ir direto para a IDE do CodeChef: https://www.codechef.com/ide.

terça-feira, 27 de dezembro de 2016

Resolvendo cubo mágico em 1 segundo

Dois caras desenvolveram um robô que resolve cubos mágicos extremamente rápido. Existem outros robôs que já fazem isso, mas esse é o mais rápido do mundo: ele faz isso em apenas 1 segundo. Veja o vídeo:




Achei incrível e que merecia ser compartilhado. 

quinta-feira, 15 de dezembro de 2016

Frameworks e Componentes Java

Hoje em dia, há muitas opções de ferramentas e componentes, para facilitar o desenvolvimento em Java e outras linguagens também, mas o foco aqui será Java. O mercado de Frameworks e Componente Java é imenso. Há muitas opções boas disponíveis no mercado, das quais é importante entender para estudarmos e aplicarmos em nosso dia a dia. Vou começar falando dos Frameworks e Componente mais usados em Java e listar o restante para conhecimento.

Frameworks Web
  • Spring MVC, é também  um dos frameworks Java mais conhecido e utilizado. Esse framework implementa um grande número de funções, como injeção de dependência, persistência de dados e uma implementação para o padrão MVC para a criação de aplicações WEB. É uma implementação que usa o modelo MVC (Model-View-Controller) para aplicações java com internet. Model View Controller ou Modelo-Visão-Controlador(MVC) é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces.
  • Struts, foi um dos frameworks mais usados em ambientes corporativos para construção de aplicações web, em especial por causa de sua versão 1.x. A versão 2.0 não tem tanta força mas é um dos mais importantes. Struts Framework é um projeto open source mantido pela Apache Software Foundation.  O nome Struts deve-se ao papel por ele desenvolvido nas aplicações WEB. Da mesma forma que a construção de uma casa, ponte, prédio necessitam de uma base mantenedora, os engenheiros de software usam o Struts para suportar cada camada de uma aplicação comercial. O Struts também é uma implementação que usar o modelo MVC.
  • VRaptor, criado na USP em 2004 e mantido hoje pela Caelum e por uma grande comunidade, não tem o tamanho do mercado de outros grandes frameworks. Mas tem a vantagem da extrema simplicidade e grande produtividade, além de ser bem focado no mercado brasileiro, com documentação em português e muito material disponível. Ele também é um framework MVC para web focado no desenvolvimento ágil. Através da inversão de controle e injeção de dependências, ele diminui drasticamente o tempo de trabalho que seria perdido com o código repetitivo: validações, conversões, direcionamentos, ajax e lookups.
  • JavaServer Faces, um dos frameworks mais usados hoje. Seu grande apelo é ser o framework oficial do Java EE para Web, enquanto que todos os outros são de terceiros. Em especial, o JSF é dito um framework component-based, enquanto que Struts (1 e 2) e VRaptor são ditos request-based ou action-based. A ideia principal de um framework de componentes é abstrair muitos dos conceitos da Web e do protocolo HTTP provendo uma forma de programação mais parecida com programação para Desktop. O JSF tem componentes visuais ricos já prontos, funciona através de tratamento de eventos e é stateful (ao contrário da Web "normal" onde tudo é stateless).
Provedores de JSF
  • Mojorra – http://javaserverfaces.java.net/
  • MyFaces – http://myfaces.apache.org/
  • ADF – http://www.oracle.com/technetwork/developer-tools/adf/overview/index.htmlde persistência
Componentes JSF
  • RichFaces – http://www.jboss.org/richfaces
  • PrimeFaces – http://primefaces.org/
  • OpenFaces – http://openfaces.org/
  • IceFaces – http://www.icesoft.org/
  • EasyFaces – http://www.easyfaces.com.br
  • Gmaps4jsf – http://code.google.com/p/gmaps4jsf/
Frameworks de Persistência
  • Hibernate, é o framework mais usado em relação a persistência e bancos de dados, se a variedade dos frameworks Web é grande, aqui não temos esse problema. O Hibernate é praticamente unanimidade no mercado Java, principalmente se usado como implementação da JPA. Há outras possibilidades, como o Toplink, o EclipseLink, o OpenJPA, o DataNucleus, o JDO, o iBatis etc. Mas o Hibernate é o mais importante. E dificilmente você vai usar outro Framework que não seja o Hibernate no mercado de trabalho, por isso só vou falar dele, e dar uma descrição mais detalhada.
    O que o hibernate realmente faz?Basicamente o  hibernate realiza o mapeamento do objeto relacional, ou seja, as tabelas do seu banco de dados são representadas através de classes na sua aplicação e as operações de recuperação e persistência dos dados são realizadas através de métodos do hibernate, sendo assim, o programador não precisa de se preocupar com instruções SQL como selects, join e etc, sendo o framework capaz até de resolver as peculiaridades que cada SGDB impõe.
    Qual motivo de utilizar o hibernate e não minhas instruções sql diretamente no banco ?Possível migrar para a maioria dos Banco de Dados disponíveis no mercado apenas modificando o arquivo de configuração do framework, sem necessidade de alterar uma linha de código do sua aplicação.
    Totalmente orientado a objetos.O hibernate executa as instruções sql para recuperar apenas as informações necessárias, evitando executar consultas complexas apenas para obter um determinado dado. Detecta automaticamente qualquer alteração ou inclusão das classes mapeadas e executa as alterações devidas no banco de dados. Realiza cache das operações, aumentando a performance do seu software. E o mais importante, é 100% software livre.  
  • Spring Data – http://www.springsource.org/
  • iBatis – http://www.mybatis.org/
  • Torque – http://db.apache.org/torque/
  • Castor – http://www.castor.org/
  • Cayenne – http://cayenne.apache.org/
Container IoC
  • Spring – http://www.springsource.org/
  • Guice – http://picocontainer.codehaus.org/
  • PicoContainer – http://code.google.com/p/google-guice/
  • EJB – http://www.oracle.com/technetwork/java/javaee/ejb/index.html
  • CDI – http://www.oracle.com/technetwork/articles/java/cdi-javaee-bien-225152.html
Validação

  • Commons Validator – http://commons.apache.org/validator/
  • Java Bean Validator – http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

Autenticação e autorização web

  • Spring Security – http://www.springsource.org/
  • JGuard – http://jguard.xwiki.com/xwiki/bin/view/Main/WebHome
  • JEE Container Managed Security (Configuração especifica para cada provedor de container JEE). Veja o Tomcat – http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html
JEE web container standalone
  • Tomcat – http://tomcat.apache.org/
  • Jetty – http://jetty.codehaus.org/jetty/
  • JBoss – http://www.jboss.org/
Manipulaçao de arquivos MS Office
  • Apache POI – http://poi.apache.org . Eu já falei um pouco aqui sobre o Apache POI e fiz até um exemplo de como gerar um Excel com Apache POI e Java
  • JExcelApi – http://jexcelapi.sourceforge.net
  • Docx4j – http://dev.plutext.org/trac/docx4j
  • Java Docx – http://www.javadocx.com
Web Services SOAP
  • Metro – http://jax-ws.java.net/
  • Axis – http://axis.apache.org/axis/
  • XFire – http://xfire.codehaus.org/
  • CXF – http://cxf.apache.org/
JavaScript
  • DOJO Toolkit – http://dojotoolkit.org/
  • JQuery – http://jquery.com/
  • Ext-JS – http://docs.sencha.com/ext-js/4-0/
  • DWR – http://directwebremoting.org/dwr/index.html
Integração com redes sociais
  • Spring Social – http://www.springsource.org/
Cache
  • Space4J – http://www.space4j.org/
  • Memcache – http://memcached.org/
  • Ecache – http://ehcache.org/
  • Prevayler – http://prevayler.org/
  • JBoss Infinispan – http://www.jboss.org/infinispan.html
NoSQL
  • MongoDB – http://www.mongodb.org/
  • Neo4j – http://neo4j.org/
  • Db4o – http://www.db4o.com/
  • MemcachedDB – http://memcachedb.org/
  • CouchDB – http://couchdb.apache.org/
  • Project Voldemort – http://project-voldemort.com/
  • MarkLkogic Server – http://www.marklogic.com/
  • BaseX – http://basex.org/
  • SimpleDB – http://aws.amazon.com/simpledb/
  • HBase – http://hbase.apache.org/
  • Casandra – http://cassandra.apache.org/
  • Hypertable – http://hypertable.org/
  • OrientBD – http://www.orientechnologies.com/
SGDB Java embutidos
  • HyperSQL – http://hsqldb.org/
  • JavaDB – http://www.oracle.com/technetwork/java/javadb/overview/index.html
  • Apache Derby – http://db.apache.org/derby/
  • H2Database – http://www.h2database.com
Testes
  • DBUnit – http://www.dbunit.org/
  • JUnit – http://www.junit.org/
  • EJBUnit – http://ejb3unit.sourceforge.net/
  • JSFUnit – http://www.jboss.org/jsfunit/
Loggin
  • jse – http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html
  • Log4J – http://logging.apache.org/index.html
Testes cargas e perfomance
  • JMeter – http://jmeter.apache.org/
  • WebLoad – http://www.webload.org/
JSON
  • JSON – http://www.json.org/java/
  • XStream – http://xstream.codehaus.org/json-tutorial.html
  • Google-JSON – http://code.google.com/p/google-gson/
Boletos bancário
  • Boletos Bancário – http://www.boletobancario.com.br
  • Bopepo – http://www.jrimum.org/bopepo/
  • Stella – http://github.com/caelum/caelum-stella/wiki/Gerando-boleto
Gerais
  • Maven – Gerenciador de dependências, do qual já falei sobre aqui: O que é o Maven,  Projeto Mavem e em outras postagem, vocês podem conferir nos posts anteriores. – http://maven.apache.org/

segunda-feira, 12 de dezembro de 2016

Principais escopos de managed beans JSF

  • @NoneScoped: o bean será instanciado a cada vez que for referenciado. 
  • @RequestScoped (padrão): tem vida curta, começando quando é referenciado em uma única requisição HTTP e terminando quando a resposta é enviada de volta ao cliente.
  • @ViewScoped: a instância permanece ativa até que o usuário navegue para uma próxima página. 
  • @SessionScoped: mantém a instância durante diversas requisições e até mesmo navegações entre páginas, até que a sessão do usuário seja invalidada ou o tempo limite é atingido. Cada usuário possui sua sessão de navegação, portanto, os objetos não são compartilhados entre os usuários. 
  • @ApplicationScoped: mantém a instância durante todo o tempo de execução da aplicação. É um escopo que compartilha os objetos para todos os usuários do sistema.