Archive for the ‘microsoft’ Category

Project Semplice - Visual Basic for the Java Platform

Monday, May 22nd, 2006

Quem acompanha o JavaPosse lembra de Tor Norbye falando sobre sua misteriosa apresentação no JavaOne… bem o mistério foi resolvido.

O projeto Semplice traz VB6 diretamente para a JVM através de ferramentas disponíveis na suíte da Sun (i.e. Netbeans). Chamads nativas á APi do Windows e controles OCX não são suportados mas o projeto parece bastante promissor.

Antes de xingar a Sun por colocar algo “tão dummy” quanto VB na JVM pense no mar de aplicações e profissionais VB6 que estão com dificuldades para migrar para .Net. Aliás, o legado VB6 é um dos fatos mais citados por Bruce Tate no Beyond Java, o livro que ninguém leu e todo mundo xinga. Ao lado da minha equipe existem uns 20 programadores VB tentando migrar para Java. Com algo assim eles poderiam ser produtivos enquanto aprendem a plataforma.

E temos mais uma linguagem quase-oficial para a JVM. Bom, se a Sun liberar a engine de conversão para ser utilziada por outras IDEs vai ser *muito* bom, mas mesmo por enquanto parabéns ao pessoal da Sun.

Beyond Java: Golfinho Poliglota?

Thursday, February 16th, 2006

Como venho acompanhando e escrevendo, a JVM caminha cada vez mais para um modelo multi-linguagem próximo do que o .Net tinha como proposta inicial. Uma apresentação de Grahan Hamilton no JavaPolis 2006 recentemente disponibilizada sobre o futuro da plataforma menciona que já no Dolphin (Java 7, próximo lançamento após o Mustang/Java 6) o suporte à linguagens dinâmicas diretamente no bytecode deverá ser incluído.

Por que isso é tão importante?

Porque é a primeira vez bytecode não utilizado pela linguagem Java é inserido na plataforma Java. Não haveria mais como negar a separação entre as duas coisas.

Se a JVM quer ser a plataforma o futuro (sinto decepcionar tanta gente mas Java é a plataforma do presente faz um tempinho), precisa se adaptar às novas realidades. Java não é a melhor ferramenta sempre: muitas vezes ela é complexa demais (perde para PHP ou Ruby on Rails), muitas vezes é inflexível (perde para Ruby, Python, Smalltalk e LISP) e muitas vezes exige um nível de conhecimento técnico não disponível em uma empresa (perde para VisualBasic, Delphi e PowerBuilder).

Há um bom tempo a Microsoft juntou várias idéias já existentes vindas de Java, Delphi, PERL 6, (o embrião de) Java EE, C++, J++, Visual Basic, DirectX, Applets, XML, etc, etc e misturou tudo no seu .Net. O grande problema na minha opnião é que o maior diferencial da plataforma nunca foi explorado.

Enquanto Java suportava oficialmente uma linguagem e implementar qualquer outra era (possível mas) extremamente trabalhoso, .Net já vinha com uma estrutura para suportar várias linguagens. As linguagens em sí não eram nenhuma novidade, até PERL já tinha algo assim em 2001, mas o apoio de uma organização do tamanho da MSFT colocando máquinas virtuais multi-linguagem na maioria dos computadores do mundo era algo muito interessante.

Mas o mercado de .Net se dividiu em 2: C# para o Elvis, VB para o Mort. Todo mundo usa ASP.Net assim como desenvolvedor Java geralmente (mas nem sempre) usa JSP para conteúdo web.

Então toda aquela diversidade de linguagens simplesmente sumiu. Hoje a Microsoft tenta correr atrás do prejuízo aumentando o suporte à linguagens como IronPython mas neste meio termo pessoas e empresas que investem na JVM ou apenas desejam usar uma VM comercial menos restrita já criaram alternativas (como Jython).

O mesmo está acontecendo com MDA vs. Software Factories. Redmond comprou a idéia (e o passe) de um cara que trabalhava na IBM chamado Jack Greenfield que é um contrapotno ao MDA em diversos aspectos. A idéia original é a mesma: Model Driven Design. Se você não sabe o que é, imagine por enquanto que se trata de colocar um modelo -sejam diagramas UML ou qualquer outro tipo de notação de alto nível para modelagem que não uma linguagem de programação como Java ou C#- num compilador e este gerar não só código mas o sistema inteiro. Não, não é o mesmo que CASE, mas para isso precisamos de um artigo próprio.

O Model Driven da MSFT se difere do do OMG/IBM principalmente no fato de não usar UML. A primeira vez que vi esta discussão eu achei que era apenas mais uma tentativa da Microsoft de vender uma linguagem proprietária de modelagem mas depois percebi que não era apenas isso.

Lembra lá em cima quando disse que Java não é a melhor ferramenta para todos os problemas? Bem, UML também não é. UML foi construída para ser flexível mas suas raízes em ser uma linguagem para ‘documentação e modelagem de sistemas de software orientados a objetos’ é bem visível.

Se é apenas uma questão de levantar o nível de abstração ok, podemos utilizar uma linguagem genérica. O grande problema nesta alternativa para mim é que (tirando outras características dos compiladores de modelo MDA como teórica independência de arquitetura no produto final) estamos apenas substituindo uma linguagem como Java por uma notação gráfica com o mesmo propósito: ser uma linguagem de programação genérica.

A proposta da Software Factory para este problema das linguagens é ao invés de UML/Java/C# utilizarmos uma linguagem específica para aquele problema. A linguagem não precisa ser gráfica mas deveria fazer sentido dentro do domínio, os construtos e primitivas dela devem ser conceitos daquele domínio. Nada abstrato e genérico como um StringBuffer, coisas como Tabelas, Conta, Fluxo, Pedido… estão são as Domain Specific Languages (DSLs).

Ainda é cedo para saber qual modelo vai vingar. Eu voto hoje num modelo híbrido com a parte de DSLs da Microsoft, a padronização e os compiladores do MDA. Quando Java EE 1.3, 1.2, etc trazia (traz!) aquele monte de XML a Microsoft desenvolveu um sistema de metadados de serviços. Tantos anos depois Java EE 5 bebe da mesma fonte mas aplica melhores práticas de desenvolvimento.

E agora, com maior abertura para novas linguagens, Java se aproxima mais das DSLs. Que bom!

Não dá pra ignorar o que vem da Microsoft ‘porque é da Microsoft’. De Redmond saem muitas coisas ruins mas ocasionalmente saem coisas boas. Como eu li em algum lugar na Internet dia desses “a Microsoft tem desenvolvedores brilhantes, o problema dela deve ser os gerentes”.

Mesmo assim, a MSFT não é a única a investir neste ramo. Fowler fala mais sobre isso num paper recente que, aliás, deve ser lido por qualquer um interessado no tema.

Windows Inovando Como Sempre…

Tuesday, January 24th, 2006

Essa é imperdível :)

2005: Java, Ruby, o Universo e Tudo Mais

Sunday, January 1st, 2006
Um título ridículo para um post sobre o que se passou no ano de 2005 na esfera tecnológica aos olhos do GUJ. Nada muito completo, apenas umas coisas que consiga lembrar…Caso você sinta falta de algo aqui, coloque nos comentários. Certamente deixei muito para trás, apenas segui a lista de notícias atrás de fatos que chamavam minha atenção.

Para iniciar o evento mais importante de tecnologia aqui do Rio aconteceu em Fevereiro, o Rio Java Summit 2005. O evento contou com a presença de Gavin King, líder e criador do Hibernate, que falou sobre persistência em vários aspectos, incluindo EJB3.0.

Gain King RJS2005

Mais uma vez o Sun Tech Days foi o evento da Sun para a Comunidade local.

Também tivemos este ano o clássico ConexãoJava, com ampla divulgação da mídia.

Em Novembro foi realizado o Rio Java Developers Day, compresença d vários palestrantes da Sun.

A Sun anunciou uma nova certificação: Sun Certified Java Associate. Pra que serve? Para nada na prática (além de engordar os curriculums como qualquer outra), mas muita gente se candidatou para obter o exame na fase de beta. Para os certificados da Sun (e de muitas outras entidades), certificados Beta são gratuitos. Um fato interessante é que esta prova em específico teve uma procura muito grande, o que mostra que foi bem divulgada pelos Portais, JUGs, Sites e mecanismos de informação em geral. A Comunidade Java está muito preocupada com certificação, seja lá qual o real fim dela.

A certificação Java 5 final saiu, mas ainda não tem o famoso livro da Kathy o que impediu muitos e muitos de tentarem a prova e continuarem a fazer a prova de certificação para Java 1.4. Também saiu a Java Language Specification 3rd Edition, guia (e bookmark) indispensável pra quem se diz programador Java.

No mesmo mês tivemos o lançamento do livro em Hibernate em Ação, uma tradução da obra de Christian Bauer e Gavin King. Além de defasado pela idade (não trata do Hibernate 3), o livro cumpre a tradição de livros técnicos porcamente traduzidos, comentários interessantes aqui. Apesar de um fiasco de tradução, esse livro é mais uma mostra que o mercado está precisando de material em português. Na mesma onda, os ótimos livros de Kathy Sierra foram traduzidos.Sou contra a tradução e o uso de versões traduzidas de livros não-básicos por profissionais, mas é mais uma prova que precisamos de material nacional de qualidade. Isso será tema de um post em breve.

No mês, seguinte, um anúncio que há muito era esperado: o framework Struts tem destino incerto. Quem acompanha o mercado de tecnologia sabia que algo ia acontecer neste sentido, mas quem insiste em tapar o Sol com a peneira tomou um golpe no estômago. Até hoje não dá pra entender direito qual vai ser do Struts, o framework antigo (que primeiro foi rebatizado para Struts Classic depois rebatizado novamente para Struts Action para não parecer tão antigo) não parece estar indo a lugar nenhum.

Em terras tupiniquins surgiu o Mentawai, um framework MVC sem XML que fez bastante sucesso considerando a concorrência extensa..

Uma notícia interessante para a comunidade brasileira de maneira geral é o SOUJAVA se tornar membro do JCP. Ainda sobre o SOUJAVA, a organização não repetiu o vexame do ano anterior e fez um chamado de trabalhos de verdade para o JustJava2005. Numa manobra estranha, começou a agregar JUGs de outras regiões querendo marcar presença nacionalmente. Isso não foi muito bem recebido por alguns que esperavam que a maior associação de usuários da tecnologia buscasse união e não concorrência com JUGs locais. No fim das contas os ânimos se acalmaram com uma conversa entre as partes.

A divulgação da estratégia de migração do WallMart fez com que muitas pessoas se interessassem em fazer o processo mais rapidamente, o que é uma forte tendência em 2006.
Falando em Software Livre, a IBM adquiriu a GlueCode, cujos funcionários produziram o Apache Geronimo. De repente, começaram a surgir iniciativas de Marketing como um prêmio para quem instalasse e rodasse o Geronimo. Sem supresa a Big Blue lançou uma versão de Geronimo sob o infame nome de WebSphere Community Edition.

Ainda na esfera FOSS, A Apache lançou um projeto de JVM livre chamado Harmony. O projeto causou algum burburinho quando anunciado mas desde então não trouxe nenhum avanço significativo seja em produto usável seja em qualquer coisa.
A guerra Mono/.Net/Java sofre um baque quando a MSFT anunciou que não ia lberar componentes importantíssimos do .Net para serem implementados por terceiros (i.e. Mono). A Microsoft também trocou o nome do seu novo sistema operacional. Este mesmo sistema já sofreu problemas de segurança no primeiro beta lançado, que resultou em alguns componentes sendo removidos do projeto inicial.

Sobre licenças, a Sun trabalhou arduamente para aliviar o peso das lincenças sobre seu código Java e diminuir as críticas e projetos de JVM livres. No fim do ano a emrpesa anunciou sua nova estratégia: liberar quase todos os seus produtos como Software Livre.

Dentro dos produtos liberados pela Sun está a família creator, uma IDE construída sobre o Netbeans. Netbeans que causou muita discussão com seu novo designer chamado Matisse que proporcionaria a produtividade de um VB/Delphi (ou seja: sem layout managers pentelhos) a uma aplicação Java. O Netbeans também lançou uma plataforma de colaboração (mais tarde a Borland e outros anunciaram coisas parecidas) que deve se tornar uma tendência. A Sun investiu *muito* para divulgar o Netbeans este ano, o produto cresceu bstante.
Ainda falando sobre IDEs, o Eclipse ganhou várias empresas novas em seu consórcio como Macromedia (agora Adobe) e Nokia também lançou o Eclipse 3.1 final e versões de diversos plugins. 2005 foi apra dar uma reorganizada geral no Eclipse e tirar cada vez mais o sel IBM do produto. Erich Gamma explicou bastante sobre o ciclo de desenvolvimento da plataforma. Para o mal ou para o bem, a IBM também doou ao Eclipse partes do seu ciclo de desenvolvimento proprietário, o RUP.

Com a concorrência desleal de ferramentas superiores gratuitas, a Oracle fez o JDeveloper ser gratuito. Apenas IDEs de verdade como IntelliJ (que lançou versão nova este ano)se deram ao luxo de continuar como produto pago desvinculado de um grande Application Server.

Sobre grandes Application Servers a Bea anunciou o WebLogic 9 com diversas novas funcionalidades entre elas integração com Jython/Python para scripting. A Bea também anunciou forte suporte ao Spring, coisa meio óbvia visto que Rod Johnson declara seu amor ao WebLogic a todo instante.

No JavaOne dos dez anos de Java a Sun anuncionou que não existirá mais Java 2.
Até o MINIX teve nova versão, certamente a ser discutida no novo livro do Professor Tanenbaum.

O Ruby on Rails fez uma entrada grandiosa no mainstream Java com um artigo na DeveloperWorks. A mídia toda explodiu e o novo livro de Bruce Tate, Beyond Java, veio abrir com uma polêmica: qual o futuro da plataforma e da linguagem Java?

O Livro ganha meu prêmio pessoal de mais importante do ano. Não por ser bem escrito, também não mostra tecnologias revolucionárias e nem consegue ser muito informativo sobre as tendências que aponta. Beyond Java poderia ser uma séria de artigos numa revista. O livro leva o prêmio por levantar uma questão importante e conseguir chamar atenção de todos os lados para a polêmica.

Joel on Software: The Perils of JavaSchools

Thursday, December 29th, 2005

Ótimo texto do Joel (duh! Como sempre…).

Wait a minute, I want to modify that statement. I’m not claiming, in this particular article, that there’s anything wrong with Java as an implementation language. There are lots of things wrong with it but those will have to wait for a different article.

Instead what I’d like to claim is that Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers. It may be a fine language to work in, but that’s not today’s topic. I would even go so far as to say that the fact that Java is not hard enough is a feature, not a bug, but it does have this one problem.

If I may be so brash, it has been my humble experience that there are two things traditionally taught in universities as a part of a computer science curriculum which many people just never really fully comprehend: pointers and recursion.


Now, I freely admit that programming with pointers is not needed in 90% of the code written today, and in fact, it’s downright dangerous in production code. OK. That’s fine. And functional programming is just not used much in practice. Agreed.

But it’s still important for some of the most exciting programming jobs. Without pointers, for example, you’d never be able to work on the Linux kernel. You can’t understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers.

Without understanding functional programming, you can’t invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn’t, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world’s largest massively parallel supercomputer. I don’t think Microsoft completely understands just how far behind they are on that wave.

Singularity==UNIX?

Wednesday, December 28th, 2005

Há algum tempo falamos aqui sobre o Singularity, um SO de pesquisa da Microsoft. James Stoup fez uns comentários bem interessantes em seu blog, tem que ligar um pouco o filtro de exageiro (noto uma ceta raiva do Windows Vista no ar…), mas merece uma lida para quem se interessou.

“What would a software platform look like if it was designed from scratch with the primary goal of dependability?” (question found in the MS Singularity research report)Why, it would look like . . . UNIX.

O maior problema do artigo, na minha opnião, é que o Singularity não foi anunciado como um produto, ams apenas como pesquisa, logo se for feito em Sing#, Spec# ou Batatinha#, por exemplo, tanto faz. Um grande mérito da MSFT é em colocar numa pesquisa real alguns conceitos novos para sistemas operacionais.

Isso me lembra o livro que estou lendo. Distributed Systems: Principles and Paradigms, de Andrew S. Tanenbaum Maarten van Steen. Antes de mais nada: sim, eu leio Tanenbaum e gostei muito dos dois livros que li (Redes e Operating Systems: Design & Implementation -que aliás terá uma terceira ediçao em breve).

Eu comecei a ler o livro do mesmo autor chamado Distributed Operating Systems mas não consegui terminar por falta de tempo (está na fila ainda). A parte relacionada é que no Distributed Systems, o autor menciona que este livro era para ser, na verdade, uma nova edição do Distributed Operating System, mas que se generalizou apra sistemas distribuídos de diversos tipos.

O que eu quero dizer com isso? Muitos recursos hoje providos por servidores de aplicação e ambientes de runtime modernos são tão básicos que deveriam estar integrados ao Sistema Operacional. Naming (JNDI, por exemplo), RPC (RMI, CORBA, XML-RPC…), memória gerenciada automaticamente, transações… tudo isso é muito básico. É natural que a arquitetura de hoje evolua e que cada vez mais os Servidores de Aplicação passem essas responsabilidades aos Sistemas Operacionais. Nós não podemos ter aplicações distribuídas e complexas modelo 2006 com sistemas operacionais modelo 1970.

Não, Singularity não é a primeira iniciativa, não é a única e provavelmente não é sequer a mais importante das iniciativas do setor em termos de tecnologia e inovação nos últimos dez anos, porém  é uma iniciativa por uma empresa enorme e que vive de um império baseado em Sistemas Operacionais.