<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.10" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comentários para Fratech's Blog</title>
	<link>http://blog.fratech.net</link>
	<description>a pragmatic blog!</description>
	<pubDate>Sat, 22 Nov 2008 02:18:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.10</generator>

	<item>
		<title>Comentário em Domain Driven Design - Quando o gavi&#227;o come a barata? por Antônio Jr</title>
		<link>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-988</link>
		<pubDate>Mon, 17 Nov 2008 17:48:59 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-988</guid>
					<description>Quero te parabenizar pelo post, muito legal.
É muito importante esclarecer que o óbvio, as vezes, não é tão óbvio. Ainda mais em se tratando de conversas entre desenvolvedores e "domain experts". O que é mais difícil em DDD é chegar na "Ubiquitous Language". Um dia agente chega lá.
Abs</description>
		<content:encoded><![CDATA[<p>Quero te parabenizar pelo post, muito legal.<br />
É muito importante esclarecer que o óbvio, as vezes, não é tão óbvio. Ainda mais em se tratando de conversas entre desenvolvedores e &#8220;domain experts&#8221;. O que é mais difícil em DDD é chegar na &#8220;Ubiquitous Language&#8221;. Um dia agente chega lá.<br />
Abs
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Domain Driven Design - Quando o gavi&#227;o come a barata? por Felipe Rodrigues</title>
		<link>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-913</link>
		<pubDate>Wed, 12 Nov 2008 12:11:13 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-913</guid>
					<description>Sim Joel...

Pretendemos traduzir este e também os outros livros. O problema é que precisamos de voluntários para nos ajudar nas traduções para que o processo seja mais rápido. Caso contrário pode demorar um pouco.</description>
		<content:encoded><![CDATA[<p>Sim Joel&#8230;</p>
<p>Pretendemos traduzir este e também os outros livros. O problema é que precisamos de voluntários para nos ajudar nas traduções para que o processo seja mais rápido. Caso contrário pode demorar um pouco.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Domain Driven Design - Quando o gavi&#227;o come a barata? por Joel Lobo</title>
		<link>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-907</link>
		<pubDate>Wed, 12 Nov 2008 01:13:42 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/09/05/domain-driven-design/#comment-907</guid>
					<description>Felipe, vocês pensam em traduzir o DDD Quickly?</description>
		<content:encoded><![CDATA[<p>Felipe, vocês pensam em traduzir o DDD Quickly?
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Agora &#233; Oficial - InfoQ Brasil em Setembro de 2008 por Marcio Elias</title>
		<link>http://blog.fratech.net/2008/06/27/agora-oficial-infoq-brasil-em-setembro-de-2008/#comment-703</link>
		<pubDate>Mon, 20 Oct 2008 20:33:20 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/06/27/agora-oficial-infoq-brasil-em-setembro-de-2008/#comment-703</guid>
					<description>Passei por aqui somente para desejar sucesso ao novo portal brasileiro. Ao contrário do que muitos podem pensar, sempre é bom sabermos que um novo portal se inicia, ainda mais com a qualidade que o InfoQ oferece. Desejo sucesso aos administradores da versão brasileira e que todos possamos cada vez mais levar material de qualidade aos profissionais de TI.
Marcio Elias - CEO Linha de Código (www.linhadecodigo.com.br).</description>
		<content:encoded><![CDATA[<p>Passei por aqui somente para desejar sucesso ao novo portal brasileiro. Ao contrário do que muitos podem pensar, sempre é bom sabermos que um novo portal se inicia, ainda mais com a qualidade que o InfoQ oferece. Desejo sucesso aos administradores da versão brasileira e que todos possamos cada vez mais levar material de qualidade aos profissionais de TI.<br />
Marcio Elias - CEO Linha de Código (www.linhadecodigo.com.br).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Evento de lan&#231;amento do portal InfoQ Brasil por André Faria Gomes</title>
		<link>http://blog.fratech.net/2008/10/19/evento-de-lanamento-do-portal-infoq-brasil/#comment-701</link>
		<pubDate>Mon, 20 Oct 2008 00:51:56 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/19/evento-de-lanamento-do-portal-infoq-brasil/#comment-701</guid>
					<description>Fala Felipe,
Nós da Bluesoft também estaremos lá. Parabéns pelo excelente trabalho que vem sendo realizado!

Abraço,
André Faria</description>
		<content:encoded><![CDATA[<p>Fala Felipe,<br />
Nós da Bluesoft também estaremos lá. Parabéns pelo excelente trabalho que vem sendo realizado!</p>
<p>Abraço,<br />
André Faria
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Groovy ou Ruby? Um breve relato. por Paulo Cordeiro</title>
		<link>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-692</link>
		<pubDate>Sat, 18 Oct 2008 14:30:53 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-692</guid>
					<description>Linguagens como Ruby e Groovy têm conquistado seu espaço entre as empresas e desenvolvedores e vieram para ficar. 
Precisamos fortalecer essas comunidades, principalmente Groovy/Grails que aqui no Brasil ainda é muito fraca.
Essas comunidades facilitam a divulgação e a inicialização de novos desenvolvedores.
Espero que tenhamos um também um "Grails Submmit 2009" 

grande abraço!</description>
		<content:encoded><![CDATA[<p>Linguagens como Ruby e Groovy têm conquistado seu espaço entre as empresas e desenvolvedores e vieram para ficar.<br />
Precisamos fortalecer essas comunidades, principalmente Groovy/Grails que aqui no Brasil ainda é muito fraca.<br />
Essas comunidades facilitam a divulgação e a inicialização de novos desenvolvedores.<br />
Espero que tenhamos um também um &#8220;Grails Submmit 2009&#8243; </p>
<p>grande abraço!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Groovy ou Ruby? Um breve relato. por Fábio Miranda</title>
		<link>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-681</link>
		<pubDate>Sat, 18 Oct 2008 01:25:46 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-681</guid>
					<description>Valeu Felipe!

O espírito eh esse mesmo. As soluções aqui mostradas só fizeram aumentar minha curiosidade / ansiedade em aprender Ruby. 

Fico um pouco perdido / receoso / pé atrás quando vejo as trombetas do apocalypse serem anunciadas para o bom e velho Java (que não foi o seu caso), porém sem um benchmark para comparar.

Neste post tive a oportunidade de avaliar alguns prós e cons em cada abordagem - e a lição que aprendi é que vai ser muito bom quando puder incorporar uma nova arma (Ruby) ao meu arsenal!

Parabéns pelo post e pelas respostas, e aguardo ansiosamente pela realização do próximo Workshop da Fratech no Rio.

Abs!</description>
		<content:encoded><![CDATA[<p>Valeu Felipe!</p>
<p>O espírito eh esse mesmo. As soluções aqui mostradas só fizeram aumentar minha curiosidade / ansiedade em aprender Ruby. </p>
<p>Fico um pouco perdido / receoso / pé atrás quando vejo as trombetas do apocalypse serem anunciadas para o bom e velho Java (que não foi o seu caso), porém sem um benchmark para comparar.</p>
<p>Neste post tive a oportunidade de avaliar alguns prós e cons em cada abordagem - e a lição que aprendi é que vai ser muito bom quando puder incorporar uma nova arma (Ruby) ao meu arsenal!</p>
<p>Parabéns pelo post e pelas respostas, e aguardo ansiosamente pela realização do próximo Workshop da Fratech no Rio.</p>
<p>Abs!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Groovy ou Ruby? Um breve relato. por Felipe Rodrigues</title>
		<link>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-675</link>
		<pubDate>Fri, 17 Oct 2008 13:57:30 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-675</guid>
					<description>A discussão sem dúvida tá interessante, mas não tenho certeza se é pertinente à esse post, até porque em momento algum eu quis dizer que Java não é boa ou não é capaz de fazer coisas que podem ser feitas em Ruby ou Groovy. Outro ponto importante é que eu sou muito mais uma cara de Groovy do que de Ruby (por falta de conhecimento em Ruby mesmo), por isso, como o Bruno falou acima, o código Ruby poderia ser bem menor.

Do ponto de vista de expressão, a única coisa complexa no código groovy e ruby foi o uso da Regex para filtrar o ano. Não acho que a parte de iteração no mapa seja menos expressivo que em Java (Concordo que regex não é tão expressivo, mas o poder da regex na simplicidade do ruby/groovy não poderia ficar de fora do meu exemplo).

Se o desafio foi e de organizar a lista em tipos (Artigos, Interviews, etc..) O código Ruby que eu (um newbie em ruby) gerei foi o seguinte: 

require 'csv'

rows = CSV::Reader.parse(File.open('publications.csv'),';') 
@items = []
	
rows.each { &#124;row&#124;
	if row[0] == 'Article' or row[0] == 'News'
		@items &lt; &lt; row
	end
}

range = 2005..2009

range.each {&#124;year&#124;
	puts year
	
	@thisYearItems = []
	@items.each {&#124;item&#124;
		if (item[1] =~ /#{year}$/) != nil
			@thisYearItems &lt;&lt; item
		end
	}
	
	numItems = @thisYearItems.size

	puts "A quantidade de materias desse ano foi: #{numItems}"

	average = (numItems/12)
	puts "A media de materias por mes nesse ano foi: #{average}"
	
	weekAverage = (average/4)
	puts "A media de materias por semana nesse ano foi: #{weekAverage}\n\n"
}

Mas a minha surpresa maior foi em groovy:

import java.math.*

List lines = []

new File('publications.csv').splitEachLine(';') { line -&gt;
  lines.add(line)
}

itens = lines.findAll { it[0] == 'News' &#124;&#124; it[0] == 'Article' }

def range = 2004..2008

range.each { year -&gt;
	println year
	numItens = itens.findAll{it[1] =~ /${year}$/}.size
	println "A quantidade de materias desse ano foi: ${numItens}"

	def average = (numItens/12).round(new MathContext(1)) as BigInteger
	println "A media de materias por mes nesse ano foi: ${average}"
	
	def weekAverage = (average/4).round(new MathContext(1)) as BigInteger
	println "A media de materias por semana nesse ano foi: ${weekAverage}\n\n"
	
}

Acrescentei apenas 1 linha de código em groovy. Talvez em Ruby dê pra fazer algo tão compacto quanto em Groovy. Se algum usuário avançado de Ruby quiser nos ajudar nesse empasse. Caso contrário acredito que é indiscutível a superioridade do Groovy, pelo menos nesse exemplo.

Java ficou bem mais complexo dessa vez. Isso porque o exemplo é bem curto. Coloque isso em escala e calcule a diferença na quantiade de linhas de código. Não estou dizendo aqui que eu detesto Java. Trabalhei com Java muito tempo e ainda trabalho para alguns clientes. Mas o Groovy me oferece o poder completo da JVM. Eu poderia por exemplo usar o mesmo TreeMap que vc usou em Groovy. (Em Ruby também dá se usarmos o JRuby. Mas não é tão integrado quanto o Groovy).</description>
		<content:encoded><![CDATA[<p>A discussão sem dúvida tá interessante, mas não tenho certeza se é pertinente à esse post, até porque em momento algum eu quis dizer que Java não é boa ou não é capaz de fazer coisas que podem ser feitas em Ruby ou Groovy. Outro ponto importante é que eu sou muito mais uma cara de Groovy do que de Ruby (por falta de conhecimento em Ruby mesmo), por isso, como o Bruno falou acima, o código Ruby poderia ser bem menor.</p>
<p>Do ponto de vista de expressão, a única coisa complexa no código groovy e ruby foi o uso da Regex para filtrar o ano. Não acho que a parte de iteração no mapa seja menos expressivo que em Java (Concordo que regex não é tão expressivo, mas o poder da regex na simplicidade do ruby/groovy não poderia ficar de fora do meu exemplo).</p>
<p>Se o desafio foi e de organizar a lista em tipos (Artigos, Interviews, etc..) O código Ruby que eu (um newbie em ruby) gerei foi o seguinte: </p>
<p>require &#8216;csv&#8217;</p>
<p>rows = CSV::Reader.parse(File.open(&#8217;publications.csv&#8217;),&#8217;;')<br />
@items = []</p>
<p>rows.each { |row|<br />
	if row[0] == &#8216;Article&#8217; or row[0] == &#8216;News&#8217;<br />
		@items < < row<br />
	end<br />
}</p>
<p>range = 2005..2009</p>
<p>range.each {|year|<br />
	puts year</p>
<p>	@thisYearItems = []<br />
	@items.each {|item|<br />
		if (item[1] =~ /#{year}$/) != nil<br />
			@thisYearItems << item<br />
		end<br />
	}</p>
<p>	numItems = @thisYearItems.size</p>
<p>	puts "A quantidade de materias desse ano foi: #{numItems}"</p>
<p>	average = (numItems/12)<br />
	puts "A media de materias por mes nesse ano foi: #{average}"</p>
<p>	weekAverage = (average/4)<br />
	puts "A media de materias por semana nesse ano foi: #{weekAverage}\n\n"<br />
}</p>
<p>Mas a minha surpresa maior foi em groovy:</p>
<p>import java.math.*</p>
<p>List lines = []</p>
<p>new File('publications.csv').splitEachLine(';') { line -><br />
  lines.add(line)<br />
}</p>
<p>itens = lines.findAll { it[0] == &#8216;News&#8217; || it[0] == &#8216;Article&#8217; }</p>
<p>def range = 2004..2008</p>
<p>range.each { year -><br />
	println year<br />
	numItens = itens.findAll{it[1] =~ /${year}$/}.size<br />
	println &#8220;A quantidade de materias desse ano foi: ${numItens}&#8221;</p>
<p>	def average = (numItens/12).round(new MathContext(1)) as BigInteger<br />
	println &#8220;A media de materias por mes nesse ano foi: ${average}&#8221;</p>
<p>	def weekAverage = (average/4).round(new MathContext(1)) as BigInteger<br />
	println &#8220;A media de materias por semana nesse ano foi: ${weekAverage}\n\n&#8221;</p>
<p>}</p>
<p>Acrescentei apenas 1 linha de código em groovy. Talvez em Ruby dê pra fazer algo tão compacto quanto em Groovy. Se algum usuário avançado de Ruby quiser nos ajudar nesse empasse. Caso contrário acredito que é indiscutível a superioridade do Groovy, pelo menos nesse exemplo.</p>
<p>Java ficou bem mais complexo dessa vez. Isso porque o exemplo é bem curto. Coloque isso em escala e calcule a diferença na quantiade de linhas de código. Não estou dizendo aqui que eu detesto Java. Trabalhei com Java muito tempo e ainda trabalho para alguns clientes. Mas o Groovy me oferece o poder completo da JVM. Eu poderia por exemplo usar o mesmo TreeMap que vc usou em Groovy. (Em Ruby também dá se usarmos o JRuby. Mas não é tão integrado quanto o Groovy).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Groovy ou Ruby? Um breve relato. por Fábio</title>
		<link>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-668</link>
		<pubDate>Thu, 16 Oct 2008 23:14:39 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-668</guid>
					<description>Show, a discussão agora ficou bastante rica! (e sem nenhum viés de travar uma batalha de linguagens, rsss...). 

Em termos de "expressão de código", Java tomou uma surra na parte do parsing do arquivo. A solução Ruby é de longe mais enxuta e elegante.

Porém, na segunda parte do código, não é tão trivial para um curioso ler e entender a lógica em Ruby. Por exemplo, como é que "23/05/2008" foi compreendido como 2008? Ou seja, já requer do curioso um pouco mais de conhecimento da sintaxe da linguagem. Minha impressão é que o código em Java nesta parte é mais claro / fácil de compreender.

Não dá pra negar porém o argumento de se obter objetos completos com pouco esforço, e de vc possuir mais facilidades "built-in" para manipulá-los. Neste quesito as linguagens dinâmicas (posso chamar assim?) levam grande vantagem. 

Em Java vc precisaria declarar uma classe 
Publication[type, date, cmm], contendo um construtor 
Publication(String type, String date, String cmm), com toda sorte de lógica de converter String para os tipos adequados (exemplo String-&#62;Date).

Porém, como nada na vida é de graça (there's no free lunch), perde-se a checagem de tipos  (o que é discutível, pois é algo que alguns amam e outros odeiam). Eu particularmente gosto desta feature. 

Tb acredito que fica mais fácil determinar a "fronteira", de um objeto em Java. Ou seja, para saber o que faz parte desse objeto (e o que não faz), basta olhar a declaração de sua classe. Mas aí já falo sem ter uma base de comparação de como Ruby lida com isso.


Para o novo desafio, a solução mais simples (sem criar uma nova classe) em Java, já apresenta novo teor de complexidade (mapas de mapas), com menos expressividade para o negócio (porém não chega a ser tão complexa): 

TreeMap&#62; typeMap = new TreeMap();

...
String type = split[0];
if (!typeMap.containsKey(type))
    typeMap.put(type, new TreeMap());
Map tmap = typeMap.get(type);
tmap.put(y, tmap.containsKey(y) ? tmap.get(y)+1 : 0);
...
for (Integer y : m) {
...
	for (String type : typeMap.keySet()) {
          // qtde de artigos por tipo no ano "y"
                      typeMap.get(type).get(y);
	}
}


Gostaria de ver a solução em Ruby para poder comparar...

Por fim, tenho muita curiosidade em aprender Ruby, porém respeito muito essa "panela velha" que bota comida no meu prato... Todos sabemos que Java é muito poderosa, e nem sempre é bem utilizada... 

Acredito que o ditado "O Java de hoje é o Cobol de amanhã" é apenas uma versão computeira da música "Pais e Filhos". Cada linguagem tem o poder e a importância característicos de seu tempo e dos problemas que ela resolve neste tempo.

Abs!</description>
		<content:encoded><![CDATA[<p>Show, a discussão agora ficou bastante rica! (e sem nenhum viés de travar uma batalha de linguagens, rsss&#8230;). </p>
<p>Em termos de &#8220;expressão de código&#8221;, Java tomou uma surra na parte do parsing do arquivo. A solução Ruby é de longe mais enxuta e elegante.</p>
<p>Porém, na segunda parte do código, não é tão trivial para um curioso ler e entender a lógica em Ruby. Por exemplo, como é que &#8220;23/05/2008&#8243; foi compreendido como 2008? Ou seja, já requer do curioso um pouco mais de conhecimento da sintaxe da linguagem. Minha impressão é que o código em Java nesta parte é mais claro / fácil de compreender.</p>
<p>Não dá pra negar porém o argumento de se obter objetos completos com pouco esforço, e de vc possuir mais facilidades &#8220;built-in&#8221; para manipulá-los. Neste quesito as linguagens dinâmicas (posso chamar assim?) levam grande vantagem. </p>
<p>Em Java vc precisaria declarar uma classe<br />
Publication[type, date, cmm], contendo um construtor<br />
Publication(String type, String date, String cmm), com toda sorte de lógica de converter String para os tipos adequados (exemplo String-&gt;Date).</p>
<p>Porém, como nada na vida é de graça (there&#8217;s no free lunch), perde-se a checagem de tipos  (o que é discutível, pois é algo que alguns amam e outros odeiam). Eu particularmente gosto desta feature. </p>
<p>Tb acredito que fica mais fácil determinar a &#8220;fronteira&#8221;, de um objeto em Java. Ou seja, para saber o que faz parte desse objeto (e o que não faz), basta olhar a declaração de sua classe. Mas aí já falo sem ter uma base de comparação de como Ruby lida com isso.</p>
<p>Para o novo desafio, a solução mais simples (sem criar uma nova classe) em Java, já apresenta novo teor de complexidade (mapas de mapas), com menos expressividade para o negócio (porém não chega a ser tão complexa): </p>
<p>TreeMap&gt; typeMap = new TreeMap();</p>
<p>&#8230;<br />
String type = split[0];<br />
if (!typeMap.containsKey(type))<br />
    typeMap.put(type, new TreeMap());<br />
Map tmap = typeMap.get(type);<br />
tmap.put(y, tmap.containsKey(y) ? tmap.get(y)+1 : 0);<br />
&#8230;<br />
for (Integer y : m) {<br />
&#8230;<br />
	for (String type : typeMap.keySet()) {<br />
          // qtde de artigos por tipo no ano &#8220;y&#8221;<br />
                      typeMap.get(type).get(y);<br />
	}<br />
}</p>
<p>Gostaria de ver a solução em Ruby para poder comparar&#8230;</p>
<p>Por fim, tenho muita curiosidade em aprender Ruby, porém respeito muito essa &#8220;panela velha&#8221; que bota comida no meu prato&#8230; Todos sabemos que Java é muito poderosa, e nem sempre é bem utilizada&#8230; </p>
<p>Acredito que o ditado &#8220;O Java de hoje é o Cobol de amanhã&#8221; é apenas uma versão computeira da música &#8220;Pais e Filhos&#8221;. Cada linguagem tem o poder e a importância característicos de seu tempo e dos problemas que ela resolve neste tempo.</p>
<p>Abs!
</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comentário em Groovy ou Ruby? Um breve relato. por Felipe Rodrigues</title>
		<link>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-666</link>
		<pubDate>Thu, 16 Oct 2008 20:41:34 +0000</pubDate>
		<guid>http://blog.fratech.net/2008/10/03/groovy-ou-ruby-um-breve-relato/#comment-666</guid>
					<description>Muito bom Fábio. Você consegui esse resultado graças ao TreeMap. (Eu nem havia pensado em utilizar um Map qdo escrevi esse artigo).
A diferença então não está na quantidade de linhas de código (graças ao TreeMap), mas na expressão do código.

Imagine uma situação onde o TreeMap não se encaixe e acrescente aí as linhas de código para organizar essa lista.

Mas a maior diferença e essa sim faria dobrar a quantidade de linhas de código é o fato de que o TreeMap não contém um objeto completo com todos os dados. Ele é apenas um Map contendo o ano e a quantidade de itens de cada ano. Experimente imprimir a quantidade de cada tipo (Articles, News, Presentations e Interviews). Mais uma vez a diferença iria aparecer.

Se você reparar, no exemplo em Groovy e Ruby, cada objeto originado era um objeto completo, com Tipo, Data e Autor. Como é que faz isso em java?

Abração</description>
		<content:encoded><![CDATA[<p>Muito bom Fábio. Você consegui esse resultado graças ao TreeMap. (Eu nem havia pensado em utilizar um Map qdo escrevi esse artigo).<br />
A diferença então não está na quantidade de linhas de código (graças ao TreeMap), mas na expressão do código.</p>
<p>Imagine uma situação onde o TreeMap não se encaixe e acrescente aí as linhas de código para organizar essa lista.</p>
<p>Mas a maior diferença e essa sim faria dobrar a quantidade de linhas de código é o fato de que o TreeMap não contém um objeto completo com todos os dados. Ele é apenas um Map contendo o ano e a quantidade de itens de cada ano. Experimente imprimir a quantidade de cada tipo (Articles, News, Presentations e Interviews). Mais uma vez a diferença iria aparecer.</p>
<p>Se você reparar, no exemplo em Groovy e Ruby, cada objeto originado era um objeto completo, com Tipo, Data e Autor. Como é que faz isso em java?</p>
<p>Abração
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
