Afinal, o porquê das mudanças no Java 8 ?

Olá Pessoal,

    O Java 8 acabou de sair e já está causando uma revolução na maneira java de programar, com algumas mudanças focadas no estilo das linguagens funcionais, ele promete acelerar a produtividade, no estilo “escreva pouco e faça muito”. Em função das novidades trazidas, resolvi escrever este post para anunciar uma série de outros posts que devo fazer em torno destas melhorias, sempre citando, é claro, outras referencias encontradas na internet ou o próprio site da Oracle.
    Antes de começar de fato a falar sobre o porque o Java 8 trouxe essas melhorias, é legal comentar um pouco sobre o estilo java de programar, pois bem, todos sabem que já fazia algum tempo que a linguagem java não passava por melhorias significativas em sua sintaxe, isso se deve é claro a decisões de projeto da própria Oracle, focadas principalmente nos seus clientes e na compatibilidade com código já existente. Acredito que as mudanças do Java 8 trazem  aquele mesmo espirito renovador que ocorreu na versão 5, na qual foram incluídas melhorias significativas, tais como: Generics, Wrappers, Enum e etc. 
   Um fato inegável na área da computação é a constante evolução das técnicas e ferramentas de programação, afinal, o que não evolui acaba ficando na gaveta do esquecimento, por exemplo, quantos programadores COBOL você conhece ? Aposto que são poucos não é mesmo ?
     Nos últimos anos vimos diversas tendencias nesse campo e uma delas foi o surgimento de inúmeras linguagens funcionais, tais como: Closure, Scala, Scheme e tantas outras. O que fazia com que programadores destas linguagens olhassem torto para o jeito java de programar, afinal, até antes do Java 8, a linguagem era predominantemente imperativa
        A grande diferença está na maneira de pensar e no código fonte gerado, uma coisa que fica nítido pra quem trabalha com linguagens funcionais, é que pensar em funções ao invés de métodos, traz vantagens significativas em termos de código fonte gerado. 
        Observe as diferenças entre um código fonte Java(Imperativo) pra um código fonte Clojure(Funcional) :
    // Isto é um código Java.
    public class PigLatin {

public static String pigLatin(String word) {
 
           char firstLetter = word.charAt(0);
 
           if ("aeiou".indexOf(firstLetter) != -1)
               return word + "ay";
           return word.substring(1) + firstLetter + "ay";
}

public static void main(String args[]) {
System.out.println(pigLatin("red"));
System.out.println(pigLatin("orange"));
}
}
         ———————————–
   
    ; Isto é o mesmo código, só que em Clojure.
    (def vowel? (set "aeiou"))

(defn pig-latin [word]
(let [first-letter (first word)]
(if (vowel? first-letter)
(str word "ay")
(str (subs word 1) first-letter "ay"))))

(println (pig-latin "red")) ;Utiliza a função pig-latin
(println (pig-latin "orange")) ; --//--
        Observe no segundo código, o uso da palavra defn  para definição da função pig-latin e o uso da mesma no fim do código, primeiramente passando “red” e depois “orange”,  podemos notar que somando todas linhas, o código fonte Clojure é bem menor, apesar de mais complexo, será ?
            Estou preparando uma série de posts envolvendo as novidades do Java 8, mas de um ponto de vista prático, em breve eu volto para falar sobre :
             
            – Expressões Lambdas;
            – Métodos Default;
            – Operações Agregadas;
            – Nova API de Data(Date-Time);
            – Tipos de anotações;

Abrcs,
Natanael Fonseca

Artigo Mobile Magazine, Edição 59

Olá Pessoal,

     Gostaria de compartilhar uma notícia especial, publiquei um artigo sobre AIDL na Mobile Magazine Edição 59,  espero que ajude os programadores interessados nesta tecnologia.  Este artigo é a realização
de um sonho antigo que eu tinha, ter uma publicação em uma revista importante da área.
     Aproveito este post para agradecer meus amigos e familiares que me apoiaram nesta jornada, espero poder retribuir todo este apoio com mais artigos publicados.  

Obrigado a todos !

Abrcs
Natanael Fonseca

ETL




Da Sigla: “Extract, Transform and Load”.

     Inicialmente, um processo de ETL, consiste em Extrair, Transformar e Carregar dados de um fonte para um destino, sendo ele, base de dados ou arquivo, onde esses dados poderão ser utilizados de diferentes formas, seja para um outro processo ou informações para Relatórios Gerenciais, possibilitando o controle e Gerenciamento do Projeto bem como a facilidade de manutenção e intervenção nos mesmos.
   Além disso, um processo de ETL bem estruturado permite que sejam feitos checkpoints por Fase de Processo, permitindo também que um determinado processo possa ser reiniciado do ponto em que parou, evitando assim que procedimentos de restore ou rollback sejam necessários.
     Este é sem dúvida o principal segredo que permeia uma boa estratégia de ETL, o qual, quando associado a boas práticas, permite que tenhamos um processo robusto, de fácil manutenção, e principalmente, gerenciável, tanto do ponto de vista de resultados quanto do ponto de vista de qualidade de dados.    
Abrcs
Natanael Fonseca