Sunday, August 21, 2011

Português estruturado de algortimo para conversão de Decimal para Binário

Este foi solicitado pela professora Aline na faculdade:


----------------------------------------------------------------------------


programa CONVERSAO_PARA_BINARIO

var

dividendo, divisor, quociente, resto: inteiro

resultado: conjunto[] de real

i: inteiro

início

dividendo = 23

divisor = 2

quociente = 0

resto = 0

repita

resto = dividendo % divisor

quociente = quociente / divisor

resultado[0] = resto

até_que (quociente <> 0)


i = tamanho_resultado


enquanto (i >= 0)

escreva resultado[i]

i--

fim_enquanto

fim

----------------------------------------------------------------------------


Implementado na linguagem Java, para conversão do número decimal 23 em seus correspondente binário, temos:


----------------------------------------------------------------------------


package binaryconverter;

import java.util.ArrayList;

/**
*
* @author marcossilvestri
*/
public class BinaryConverter {

public static void main(String[] args) {

int dividend = 23;
int divisor = 2;
int quotient = 0;
int remainder = 0;

ArrayList result = new ArrayList();

remainder = dividend % divisor;
quotient = dividend / divisor;
result.add(remainder);

do {
remainder = quotient % divisor;
quotient /= divisor;
result.add(remainder);

} while (quotient != 0);

int i = result.size() - 1;

while (i >= 0) {
System.out.print(result.get(i));
i--;
}

System.out.println();
}
}


----------------------------------------------------------------------------


Abraços!

Saturday, August 20, 2011

Simple Java program to convert Decimal numbers to Binary ones

After more than 3 hours striving to achieve it, I've finally made it. This is my simple program written in Java to convert decimal numbers to their binary equivalents. Actually, the way it is now converts the number 23 into its binary equivalent. I'd better go to bed now, and whenever I have the time, to change the current program to receive an input of what number to convert, as well as which destination base, including others than 2.

Without further ado, here it goes:

===========================

package binaryconverter;

import java.util.ArrayList;

/**
*
* @author marcossilvestri
*/
public class BinaryConverter {

public static void main(String[] args) {

int dividend = 23;
int divisor = 2;
int quotient = 0;
int remainder = 0;

ArrayList result = new ArrayList();

remainder = dividend % divisor;
quotient = dividend / divisor;
result.add(remainder);

do {
remainder = quotient % divisor;
quotient /= divisor;
result.add(remainder);

} while (quotient != 0);

int i = result.size() - 1;

while (i >= 0) {
System.out.print(result.get(i));
i--;
}

System.out.println();
}
}

===========================

Catch you later!


Funções Administrativas e notas interessantes

Funções Administrativas:

De acordo com o professor José Carlos Figueira da FMU (e provavelmente muitos outros profissionais), que leciona Administração e Economia, as 4 funções administrativas, ou seja, o que um administrador nato deve fazer, são:
  • Planejar => definir os objetivos e identificar os recursos necessários
  • Organizar => ober/viabilizar os recursos necessários
  • Dirigir => aplicar/conduzir os recursos visando atingir os objetivos
  • Controlar => verificar se os objetivos foram alcançados, corrigindo erros para evitar sua repetição
Recursos de uma empresa:

Segundo as notas de aula, toda empresa conta com os seguintes recursos para poder operar:
  • Recurso Humano;
  • Recurso Financeiro;
  • Recurso material;
  • Informação.
Níveis de decisão de uma empresa:
  • Estratégico (define "o que deve ser feito");
  • Tático (define "como deve ser feito");
  • Operacional (coordena a execução dos processos).
Funções organizacionais:

Nem todas as empresas têm todas elas, mas a existência delas independe do tamanho da empresa:
  • Vendas;
  • Produção;
  • Compras;
  • Recursos Humanos;
  • Finanças.
Atividades FIM vs atividades MEIO:
  • Atividades FIM: diretamente ligadas ao negócio principal da empresa;
  • Atividades MEIO: necessárias, mas não diretamente ligadas ao negócio principal da empresa.
Um exemplo a ser citado pode ser uma empresa de alimentos, em que as atividades ligadas à produção de alimentos são do tipo FIM, ao passo que, por exemplo, atividades como limpeza de ambiente ou manutenção de máquinas são do tipo MEIO.

Outras definições:
  • Missão => é a razão da existência da empresa, é atemporal;
  • Objetivos => tem prazo definido, é mensurável, possui clareza, deve ter flexibilidade e sofrer comparabilidade;
  • Eficiência => usar corretamente os recursos/ferramentas;
  • Eficácia => atingir os objetivos.
Um exemplo sobre eficiência e eficácia que utilizo é um com futebol:

Na última Copa América, o Brasil, na segunda partida contra Portugal, foi um baita de um timaço como diria o comentarista Neto da Rede Bandeirantes, jogou muito mais que o Paraguai, foi incomparável, ou seja, teve uma excelente eficiência, mas como a bola não entrava "nem com reza brava", a partida foi para os pênaltis, onde mais uma vez, a bola não entrou. Como o Paraguai ganhou o jogo, e o Brasil foi eficiente durante toda a partida (exceto nos pênaltis), já o time que foi o eficaz foi exatamente o do Paraguai, o time que aingiu o objetivo, a vitória.
Aliás, isso acontece muito no futebol, times que jogam demais, atropelam, devoram o adversário, mas a bola não entra, às vezes por razões bobas. Nestes casos, o time é muito eficiente, mal deixa o adversário jogar, até que este último chega e ganha a partida com uma bola parada, um pênalti ou uma falta, e acaba por se consagrar campeão, o time de eficácia.
Estes exemplos deixam claro que eficiência e eficácia são coisas totalmente distintas, podendo coexistir ou não. Ambas atuando é o melhor dos mundos, mas dependendo do caso, ser eficiente convence, mas só o eficaz é quem obterá o maior dos ganhos.

Propriedades dos materials de construção mecânica

As propriedades dos materiais podem ser reunidas em dois grupos:

propriedades físicas;

propriedades químicas.

As propriedades físicas determinam o comportamento do material em todas as circunstâncias do processo de fabricação e de utilização. São divididas em propriedades mecânicas, propriedades térmicas e propriedades elétricas.


As propriedades mecânicas aparecemquando o material estásujeito a esforços de natureza mecânica. Isso quer dizer que essas propriedades determinam a maior ou menor capacidade que o material tem para transmitir ou resistir aos

esforços que lhe são aplicados. Essa capacidade é necessária não só durante o processo de fabricação, mas também durante sua utilização.

Do ponto de vista da indústria mecânica, esse conjunto de propriedades éconsiderado o mais importante para a escolha de uma matéria-prima.

Dentre as propriedades mecânicas, a mais importante é a resistência mecânica. Essa propriedade permite que o material seja capaz de resistir àação de determinados tipos de esforços, como a tração e acompressão (resistência à tração e resistência àcompressão).

A resistência mecânica relaciona-se às forças internas de atração existentes entre as partículas que compõem o material. Quando as ligações covalentes unem um grande número de átomos, como no caso do carbono, a dureza do material é grande.


A elasticidade é a capacidade que o material deve ter de se deformar, quando submetido a um esforço, e de voltar à forma original quando o esforço termina.

Quando se fala em elasticidade, o primeiro material a ser lembrado é a borracha, embora alguns tipos de materiais plásticos também tenham essa propriedade. Porém, é preciso

lembrar que o aço, quando fabricado para esse fim, também apresenta essa propriedade. É o caso do aço para a fabricação das molas.


A plasticidade é a capacidade que o material deve ter de se deformar, quando submetido a um esforço, e de manter essa forma quando o esforço desaparece.

Essa propriedade é importante para os processos de fabricação que exigem conformação mecânica, como, por exemplo, na prensagem, para a fabricação de partes da carroceria de veículos, na laminação, para a fabricação de chapas, na extrusão, para a fabricação de tubos.

A plasticidade pode se apresentar no material como maleabilidade e como ductilidade.


A dureza é a resistência do material à penetração, à deformação plástica permanente e ao desgaste. Em geral os materiais duros são também frágeis.


A fragilidade é também uma propriedade mecânica na qual o material apresenta baixa resistência aos choques. O vidro, por exemplo, é duro e bastante frágil.


As propriedades térmicas determinam o comportamento dos materiais quando são submetidos a variações de temperatura. Isso acontece tanto no processamento do material quanto na sua utilização. É um dado muito importante, por exemplo, na fabricação de ferramentas de corte.


O ponto de fusão é uma propriedade térmica do material que se refere à temperatura em que o material passa do estado sólido para o estado líquido. Dentre os materiais metálicos, o ponto de fusão éuma propriedade importante para determinar sua utilização. O alumínio, por exemplo, se funde a 660ºC, enquanto que o cobre se funde a 1.084ºC.


O ponto de ebulição é a temperatura em que o material passa do estado líquido para o estado gasoso.


A dilatação térmica é a propriedade que faz com que os materiais, em geral, aumentem de tamanho quando a elevação da temperatura. Por causa dessa propriedade, as grandes estruturas de concreto como prédios, pontes e viadutos, por exemplo, são construídas com pequenos vãos

ou folgas entre as lajes, para que elas possam se acomodar nos dias de muito calor.


A condutividade térmica é a capacidade que determinados materiais têm de conduzir calor.


As propriedades elétricas determinam o comportamento dos materiais quando são submetidos àpassagem de uma corrente elétrica.


A condutividade elétrica é uma propriedade dos metais que está relacionada com a capacidade de conduzir a corrente elétrica.


A resistividade, por sua vez, éa resistência que o material oferece à passagem da corrente elétrica.


As propriedades químicas são as que se manifestam quando o material entra em contato com outros materiais ou com o ambiente. Elas se apresentam sob a forma de presença ou ausência de resistência àcorrosão, aos ácidos, às soluções salinas.

O alumínio, por exemplo, é um material que, em contato com o ambiente, resiste bem àcorrosão. O ferro na mesma condição, por sua vez, enferruja, isto é, não resiste à corrosão.

==================

Este conteúdo foi obtido das aulas de Materiais Elétricos da FMU/FISP, Edinaldo.

Sunday, August 14, 2011

Utilização do Cálculo Numérico na Engenharia

Minha nossa, nunca pensei que uma coisa que deveria ser tão simples está me tomando horas, e eu com uma quantidade enorme de coisas a mais pra fazer...

A professora de Cálculo Numérico pediu uma pequena pesquisa para saber onde sua matéria é usada na área de Engenharia de seus alunos. A princípio, o Google resolveria tudo, você até acha muito material sobre Cálculo Numérico, mas praticamente nada se encontra do porquê deste nome "numérico" e listagens simples do tipo "é usado pra fazer isso ou aquilo".

Estou há horas caçando, tanto em Inglês quanto em Português, e por não encontrar nada simples, resolvi escrever a minha própria interpretação sobre o assunto com o que consegui até agora.

---------

Primeiramente, perguntei em sala e a professora confirmou que o termo "numérico" é utilizado porque temos o uso de computadores na realização de cálculos. Contudo, achei outra definição (mais uma interpretação minha pra dizer a verdade) sobre o porquê de tal palavra, cujo entendimento adquirido tem haver com o lidar com cálculos que você deve resolver através de Métodos Numéricos, ou seja, métodos específicos para a solução de problema de Cálculo Numérico. Ok, mas o que é este "numérico" afinal de contas? Segundo a minha interpretação, o termo é referenciado ao tipo de cálculo cujo resultado não é 100% preciso, mas sim um resultado aproximado, o mais próximo possível do que seria o 100% preciso, onde estar lidando com os números de forma a controlar precisão, arredondamento, aproximação, etc. (trabalhar com números = numericamente) é a única solução possível. Isso me parece muito pouco acadêmico para uma definição bem elaborada, mas foi o máximo que eu consegui entender do porquê deste termo "numérico", diferenciando-o do tradicional Cálculo Diferencial e Integral.

O resultado de minhas leituras indicam que Cálculo Numérico é uma ciência que, ao contrário de muito do que se vê de Matemática pura onde quase tudo pode ser muito exato, trabalha com grandezas físicas do nosso dia-a-dia, que por mais que pareçam ser exatas, na verdade são apenas aproximações dentro de uma aceitável margem de erro. Por exemplo, quem te garante que quando você mede algo com uma régua você realmente encontrou o valor que está enxergando? Quem garante que outra pessoa não enxergará o tamanho do mesmo objeto sendo medido com 0,1 cm a mais? Medições como estas e muitas outras na vida humana estão sujeitas a erro, e embora uma medição de qualquer objeto com uma régua caseira seja algo nada comprometedor na vida das pessoas, há certas áreas onde erros ínfimos podem fazer toda a diferença e até provocar desastres ou prejuízos financeiros, áreas estas como a de Engenharia.

O Cálculo Numérico não determina um valor absoluto, mas sim uma margem aceitável dentro da qual se pode trabalhar, sem que as coisas saiam do controle.

Duas áreas distintas onde o Cálculo Numérico é utilizado são na Análise de Predição e Determinação de Design de sistemas.

Análise de Predição:

- O tempo de aceleração de um veículo que vai de 0 a 80Km/h (Engenharia Mecânica);

- A potência de saída de um motor elétrico (Engenharia Elétrica / Mecânica);

- O ganho de uma antena eletromagnética (Engenharia Elétrica);

- A carga máxima que uma ponte pode suportar (Engenharia Civil);

- O tempo de reação de um processo químico (Engenharia Química);

- A força exercida pelo ar em um avião quando em movimento (Engenharia Aeroespacial);

- O esperado retorno do investimento em um produto (Engenharia Industrial e Operacional);

- A estimativa do quanto uma cidade pode ser alagada e com qual voracidade (velocidade) isso aconteceria caso houvesse um furo de tamanho específico em uma barragem (Engenharia Civil);

- Realização da previsão de condições climáticas.

Determinação de Design de sistemas:

- Design de um veículo para que seu uso de combustível seja maximizado economicamente, enquanto mantendo níveis de performance adequados através da variação do design do veículo;

- Minimizar o peso de uma bicicleta Mountain Bike, ao passo que garantindo que sua estrutura não será afetada com a variação da forma e espessura do quadro.

O que deve ser citado é que tais cálculos podem ser muito complexos, a ponto de serem completamente inviáveis de serem realizados analiticamente (seu papel e sua caneta), mas sim devam ser realizados com o auxílio de um CAS (Computer Algebra System), ou seja, um software específico para a realização dos cálculos, que ao contrário de analíticos, são ditos serem numéricos, aplicando uma/algumas das formas específicas de cálculo numérico que sejam específicas para o seu problema.

Alguns softwares para a realização de Cálculo Numérico são Matlab (pago) e Octave (free), dentre vários outros, para diferentes sistemas operacionais, mencionados no tópico A List of Matlab Software Clones For Numerical Analysis aqui no blog.

Com tais softwares, é possível:

- a resolução de Sistemas Lineares e não-Lineares podem ser resolvidos numericamente,

- assim como os equivalentes numéricos do Cálculo Diferencial e Integral,

- Determinação de Raízes de Equações,

- Interpolação de valores tabelados,

- Resoluções de Álgebra Linear (Matrizes, Determinantes, Sistemas, Vetores, Autovalor e Autovetor, Transformações Lineares, etc.),

- Equações Diferenciais

- etc.

É possível acoplar softwares de display gráfico para a produção de gráficos demonstrativos (alguns já tem este recurso), uma vez que, a princípio, todos os cálculos são realizados na linha de comando de tais softwares, onde algoritmos podem ser inseridos após serem modelados de acordo com um problema real específico.

Conclusão parcial:

Bom, isso é o que eu tenho a dizer sobre Cálculo Numérico neste momento, um estudo que trabalha com gradezas da vida real, de forma a estimar o design e prever o comportamento de sistemas nas áreas de Engenharia (dentre outras) com o objetivo de maximar performance e ganhos de sistemas e produtos através da melhor utilização de recursos financeiros e alterações em seus designs, trabalhando sempre com a noção de prover soluções o mais próximo possível do real.

Na natureza, acredito que quase tudo deva ser aproximado ao invés de absoluto, portando, provendo uma margem de erro dentro da aceitável para sistemas e produtos, de forma a evitar problemas e prejuízos diversos na concepção de sistemas e produtos.

Para facilitar os cálculos complexos, o uso de software específico para realizar as estimativas e o trabalho com as margens de erro aceitáveis são empregados, a exemplo do Matlab e do Octave, havendo portanto ganho de tempo e dinheiro na criação das obras de Engenharia.

Qualquer um que tenha a acrescentar ou corrigir o meu entendimento é bem vindo para postar comentários.

Abraços!

O que é o Cálculo Numérico?


O Cálculo Numérico corresponde a um conjunto de ferramentas ou métodos usados para se obter a solução de problemas matemáticos de forma aproximada.

Esses métodos se aplicam principalmente a problemas que não apresentam uma solução exata, portanto precisam ser resolvidos numericamente.

Por que produzir resultados numéricos?

Um problema de Matemática pode ser resolvido analiticamente, mas esse método pode se tornar impraticável com o aumento do tamanho do problema.

Exemplo: solução de sistemas de equações lineares.


A existência de problemas para os quais não existem métodos matemáticos para solução (não podem ser resolvidos analiticamente).

Exemplos:

a)
não tem primitiva em forma simples;

b)
não pode ser resolvido analiticamente;

c) equações diferenciais parciais não lineares podem ser resolvidas analiticamente só em casos particulares.

Os métodos numéricos buscam soluções aproximadas para as formulações matemáticas.

Nos problemas reais, os dados são medidas e, como tais, não são exatos. Uma medida física não é um número, é um intervalo, pela própria imprecisão das medidas. Daí, trabalha-se sempre com a figura do erro, inerente à própria medição.

Os métodos aproximados buscam uma aproximação do que seria o valor exato. Dessa forma é inerente aos métodos se trabalhar com a figura da aproximação, do erro, do desvio.

Função do Cálculo Numérico na Engenharia:

Buscar solucionar problemas técnicos através de métodos numéricos (modelo matemático)

Passos para a resolução de problemas:

  1. Problema
  2. Modelagem
  3. Refinamento
  4. Resultado de Ciências Afins
  5. Mensuração
  6. Escolha de Métodos
  7. Escolha de Parâmetros
  8. Trincamento de Iterações
  9. Resultado Numérico
Fluxograma para solução numérica:

  1. Problema
  2. Levantamento de Dados
  3. Construção do Modelo Matemático
  4. Escolha do Método Numérico
  5. Implementação Computacional
  6. Análise dos Resultados
  7. Verificação
Influência dos erros nas soluções:


Exemplo 1: Falha no lançamento de mísseis (25/02/1991 – Guerra do Golfo – míssil Patriot)

- Limitação na representação numérica (24 bits)

- Erro de 0,34 s no cálculo do tempo de lançamento


Exemplo 2: Explosão de foguetes (04/06/1996 – Guiana Francesa – foguete Ariane 5)

- Limitação na representação numérica (64 bits/ 16 bits)

- Erro de trajetória 36,7 s após o lançamento

- Prejuízo: U$ 7,5 bilhões



Aplicações de cálculo numérico na engenharia:

- Determinação de raízes de equações

- Interpolação de valores tabelados

- Integração numérica, entre outros

============================================

Conteúdo obtido de uma apresentação de slides produzida por:

Profs.:
Bruno C N Queiroz
J. Antão B. Moura
José Eustáquio R. de Queiroz
Joseana Macêdo Fechine
Maria Izabel C. Cabral

De: DSC/CCT/UFCG

de nome: "motivacao.ppt"

A List Of Matlab Software Clones For Numerical Analysis

This list encompasses both commercial and free software which resemble Matlab for Numerical Analysis and different scientific purposes. On the list, you'll find options for operating systems like Windows, Mac OS X and Linux distributions.

I hope it helps you in case you're searching for such a type of software:

  1. Matlab
  2. S-PLUS
  3. LabVIEW
  4. IDL
  5. Octave (GUIs: qtoctave, textmate, emacs)
  6. FreeMat
  7. FelxPro
  8. IT++ “a C++ Library”
  9. Rlab
  10. COMSOL Script
  11. O-Matrix
  12. Scilab
  13. SAGE: Open Source Mathematics Software
  14. FreeMat
  15. Sysquake
Yesterday, I installed Octave for Mac, I'll be using it for my Numerical Analysis course.

Later!

C++ Applications and Uses

Here is a list of systems, applications, and libraries that are completely or mostly written in C++. Naturally, this is not intended to be a complete list. In fact, I couldn't list a 1000th of all major C++ programs if I tried, and this list holds maybe 1000th of the ones I have heard of. It is a list of systems, applications, and libraries that a reader might have some familiarity with, that might give a novice an idea what is being done with C++, or that I simply thought "cool".

Here is a link to a Chinese translation.

I (Bjarne Stroustrup) don't make any guarantees about the accuracy of the list. I believe that it's accurate -- I trust the people who sent me examples, but I have not seen the source code myself. I have a preference of C++style code over code that are called C++ eventhough it is mostly C and try to avoid list C or "almost C" programs. Many of the detailed descriptions are the words of the respective systems' developers and users, rather than mine.

The organization of this list is idiosyncratic. Where a set of applications are clearly associated with a single organization, I list it under the name of that organization, but some systems doesn't fit that pattern.

No, I don't know what all the acronyms mean. Yes, I do list something as C++ even if it relies on non-standard extensions. Yes, I'd appreciate more examples -- especially major applications. If you send one, a URL to a support site would be appreciated. No, I will not list an application, system, or library unless I think the listing will be of interest to a lot of people -- I'm emphatically not trying to make a complete list. No I will not list an application before it is in wide-spread use (sorry); this list is meant to demonstrate major use and as such it would be weakened by including new products. I make no pretensions of "fairness", such as promising to list all competing products in an area if I list one -- this is a list trying to give an overall impression, not a list to help you select a product. I rewrite descriptions as little as possible, but I do remove obvious advertising.

Please note that I don't review entries often. Some may not be completely up-to-date. Feel free to send me updates.

Thanks to all who sent me examples. Suggestions for additions and corrections are welcome.

Other people's lists:

Applications clearly associated with a single organization:

  • 12D Solutions: Computer Aided Design system for surveying, civil engineering, and more.
  • Adobe Systems: All major applications are developed in C++:
    • Photoshop & ImageReady,
    • Illustrator,
    • Acrobat,
    • InDesign,
    • GoLive,
    • Frame (mostly C, some C++)
  • Alias|Wavefront: Maya. Maya has been used in the production of just about every major film involving computer-generated effects since its release, including Star Wars Episode I, Spider-Man, Lord of the Rings, Stuart Little, etc. "I love 3d animation".
  • Amadeus: running the biggest non-military datacenter in Europe (in excess of 5000 transactions per second, 200000 terminals connected, 24/7 operation) is doing most of its current developments in C++. All Unix-based server applications are completely C++. Some of them:
    • Car reservation
    • Customer profile server
    • Electronic ticketing
    • TCP/IP front end
  • Amazon.com: Software for large-scale e-commerce.
  • Apple: OS X is written in a mix of language, but a few important parts are C++. The two most interesting are
    • Finder
    • IOKit device drivers. (IOKit is the only place where we use C++ in the kernel, though.)
    Also,
    • AppleWorks
    • the iPod user interface (uses Pixo application framework written in C++)
    • "Of the thousands of Macintosh applications that have shipped I estimate that over half were written C++".
    • Frameworks: There are three major C++ application frame works developed for Macintosh: Apple's MacApp (some MacApp applications), Symantec's Think Class Libraries, and Metrowerks' PowerPlant. There are also a number of smaller (in market share) frameworks that have been developed.
  • Arium: Sourcepoint; Hardware debugging and emulation for Intel and ARM systems (incl. multi-processor systems).
  • AT&T: The largest US telecommunications provider.
    • 1-800 service
    • provisioning systems
    • systems for rapid network recovery after failure
  • Autodesk: A large number of major number of application in the CAD domain.
  • BeOS: a multiprocessor multimedia personal operating system.
  • BigFix, Inc.: BigFix is a communication system for delivering technical support information to the people for whom it is relevant and timely. It is used by companies such as Autodesk and eMachines to support both software and hardware. All BigFix products are written in C++.
  • Bloomberg: Providing real-time financial information to investors.
  • Cabot Communications: Portable set top box and digital TV software (incl. ISO MHEG-5).
  • Caldera: OpenWBEM open source implementation of the WBEM standard for system management software is written in C++ (www.openwbem.com). This uses more new C++ 98 features than almost any source base I've seen outside of those done by the standards community itself.
  • callas Software: software for the analysis, correction and optimization of PDF files: pdfInspektor, Acrobat Preflight and other plug-ins.
  • CERN: Data analysis - especially for large high-energy physics experiments - using the ROOT toolset and libraries.
  • Codemill:
      SuperDoc: A PalmOS document reader, notable for fast font anti-aliasing.
    • SecurityContext: A Win32 COM component to simplify the querying of the OS security context of the current thread.
    • Map: A Win32 COM component that provides a thread-safe map (as in std::map) of COM Variant data types e.g. for data cacheing within IIS web applications.
  • Code Synthesis Tools: Provides XSD, an XML data binding generator for C++ with support for in-memory and stream-oriented processing models. XSD is written in portable C++ and compiles with a wide range of C++ compilers. XSD is used in telecommunications, finance, high-performance computing, and integrated circuit design.
  • Coverity: Static source code analysis tool for C and C++ written in C++. Used for finding Linux bugs.
  • CoWare: system/chip specification in C++.
  • Credit Agricole Indosuez Cheuvreux: uses C++ exclusively for tracking orders on the European stock markets.
  • Dantz Development Corporation: Retrospect backup software for Windows.
  • D-Cubed: Components for geometric constraint solving, motion simulation, collision detection, hidden line removal and profile management. Our emphasis is on accuracy and speed. Used in the vast majority of CAD applications (e.g. CATIA, SolidWorks, AutoCAD, NX, SolidEdge).
  • D E Shaw: Financial analysis and trading software.
  • Digiquant: Internet Management System (IMS), infrastructure software fo services over IP-based networks. Some of the C++-based elements of IMS are extendable AAA Server, Service provisioning, Rating Engine, and Port Server.
  • Dassault Systems: Catia v5; leading CAD software, on which was conceived all recent Airbus planes (A380, ...). Also, Boeing 787 software. Entirely written in C++, using STL.
  • Doxygen: A document generation tool.
  • Dutch ministry of transport, public works, and water management: surge barrier control. The BOS control system for the Maeslant Barrier protecting Rotterdam from flooding. This safety-critical system (highest safety integrity level according to IEC 61508) is built using C++, Z and PROMELA. A high level overview with nice pictures can be found here.
  • Efficient Networks: (a wholly owned subsidiary of Siemens) has sold more than 8 million licenses worldwide of its PPPoE client software for Macintosh, Windows and Linux systems. Products often are distributed under ISP brand names. New Macintosh development is wholly C++; Windows development is a mix of C and C++. Products using C++ include
    • EnterNet: PPPoE client drivers and settings applications
    • Tango Qualifier: pre-purchase evaluation of user environment
    • Tango Installer: a wizard-like installer program
    • Tango Access: PPPoE client drivers and settings applications
    • Tango Support: user-level network diagnostic tools
  • Ericsson:
    • TelORB - Distributed operating system with object oriented
    • distributed RAM database, The base for the TSP application
    • server platform.
    • TDMA-CDMA HLR
    • GSM-TDMA-CDMA mobility gateway
    • AAA server.
  • Facebook: Several high-performance and high-reliability components.
  • FASTprotocol: A protocol for financial transactions with many implementstions, including Quickfast (open source) and FIX/FAST for the Russian trading system.
  • FlightGear: an open source flight simulator, using JSBSim, one of the flight dynamics math models used in FlightGear and by other simulators.
  • Geant4: Toolkit for the simulation of particles interaction with matter for use in High Energy and Nuclear Physics experiments, Space, and Medical applications. The Geant4 project is a world-wide collaboration of about 100 scientists participating in more than 10 physics experiments in Europe, Russia, Japan, Canada and USA. It involves the participation of several national and international institutes and organizations. The software is entirely written in C++ and has been developed exploiting Object-Oriented methodologies and tools. It consists of roughly 500K lines of code and includes the implementation of a rather wide set of state-of-the-art algorithms and theoretical models for electro-magnetic and hadronic physics interactions.
  • Google: web search engine, etc.
  • Haiku OS: Major parts of the system (including most of the kernel) are written in C++. It�s the logical continuation of BeOS.
  • Havoc: Real-time physics for animation and games. "Havok, like Guinness, is made in Ireland.
  • HP: Here is a tiny fraction of HP's C++ apps:
    • C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).
    • SAM (HP's system management utility)
    • Some of the networking libraries in HP-UX
    • Java VM core
    • Parts of Openview
    • Non-stop XML parser (originally from compaq)
  • IBM:
    • OS/400.
    • K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.
  • Image Systems: TrackEye and TEMA, the world leading motion analysys programs (based on digital image processing). Used by most car manufacturers to analyse the effects of crash tests. Also used by car and aircraft manufacturers to analyse the performance of new models, "in short wherever high-speed sequences are used".
  • Intel:
  • Intuit: Quicken (personal financial software).
  • ILOG: At ILOG, we provide libraries written in C++ used for:
    • Visualization. This set of libraries is used to build applications that needs portable GUI's and advanced graphical features.
    • Optimization. This set of libraries is used to build programs that needs constraint programming or/and the simplex algorithm.
    • Rules. This set of libraries is used to build applications that needs a rule engine to fire actions according to events that may happen.
    Here are some customers I'm aware of: Chrysler, EDF, CENA, Nortel, SAP, Alcatel, Renault, Manugistics, Communaut urbaine de Lyon (Traffic regulation in the city of Lyon), Parc Technologies Ltd, Barclays Global Investors (BGI), TLC (Transport, Informatik- und Logistik-Consulting GmbH) subsidiary of Deutsche Bahn, DoD's Joint Operational Support Airlift Center (JOSAC), Telefonica, CISCO, NISSAN, POSCO, Sony Bank, isMobile, Southwest Airlines, Novient, Vodafone TeleCommerce, Sabre Holdings Corporation, France Telecom, Ericsson, Deutsche Telekom, Lucent Technologies, MCI WorldCom, Siemens, First Union Home Equity Bank, Baan, HP, Adonix, Peugeot, ARINC, McHugh.
  • KLA-Tencor: Semiconductor manufacturing systems.
  • Looksmart is predominantly written in C++. All products related to searching and exploring the web are written in C++. Used by well over 5,000,000 unique users per day.
  • MAN B&W Diesel A/S: Purveyers of engines for large and very large ships (such as container ships and tankers).
    • Electronic controlled fuel injection and exhaust valve control system for very large (up to more than 100.000 break horse power) two stroke diesel engines. Hard real-time system running on medium size embedded system. Absolutely critical 24/7 operation with distributed, redundant error recovery. Written entirely in high performance, high level C++, except for a few hundred lines of assembler code.
    • Several large support systems for engines and crew running on desktop machines, written entirely in C++.
    • Several internal business critical applications, for engine design calculations and design information storage."
  • Medimage: all products: These products range from medical image display systems to custom communications software which move images from one machine to another via modems and TCP/IP. We build our products for both Mac OS and Windows computers.
  • Mentor Graphics: Since the 1980s Mentor Graphics has built most of its applications using C++, including:
    • Calibre: software for IC physical verification, manufacturing, and resolution enhancement.
    • Formal Pro: formal verification equivalency checker which enables multi-million gate ASIC and SoC verification.
    • FastScan: automatic test pattern generation tool for ASICs and ICs.
    • FlexTest: test pattern generation for optimizing test coverage.
    • TestKompress: tool suite which reduces ATE memory and time requirements for testing by up to 10 times.
    • MachTA/PA: fast, accurate, high capacity, transistor-level circuit simulation for timing and power analysis of DSM and mixed-signal IC designs.
  • Metrowerks is a leading provider of software development tools. The CodeWarrior Integrated Development Environment (IDE), RAD plugins and PowerPlant, our object oriented class library, are all written in C++. Their website has a description of some cool applications, such as 3-D animation, real-time Web conferencing, and satellite control technology.
  • Microsoft: Literally everything at Microsoft is built using recent flavors of Visual C++ (using older versions would automatically cause an application to fail the security review). The list would include major products like:
    • Windows XP, Vista, System 7
    • Windows NT (NT4 and 2000)
    • Windows 9x (95, 98, Me)
    • Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
    • Internet Explorer (including Outlook Express)
    • Visual Studio (Visual C++, Visual Basic, Visual FoxPro) (Some parts of Visual Studio like the Base Class Libraries that ship with the .NET Framework were written using C# but the C# compiler itself is written in C++.)
    • Exchange
    • SQL
    There are also "minor" products like:
    • FrontPage
    • Money
    • Picture It
    • Project
    • and all the games.
  • mIRC: Chat. "is being used by over a million people"
  • Morgan Stanley: a large chunk of their financial modelling.
  • Mozilla: Firefox browser and Thunderbird mail client (open source).
  • MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database.
  • NASA: Lots of projects, including
    • JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).
    • James Webb Telescope James Webb is the successor to the Hubble Space Telescope.
    • (many) parts of the software for the international space station.
  • The National Census Bureau of Israel is written mostly in C++, with some components of embedded SQL. It serves millions of transactions per month, starting with birth and death registration, naturalization, passport issuance, visas and so on for 8 million civilians and foreign workers.
  • Netopia:
    • Timbuktu Pro -- Remote control, file exchange, and collaborative tools for Macintosh and Windows. Timbuktu Pro is up to about 10,000,000 installed nodes and is in 70% of Fortune 500 companies. The Mac version has won numerous awards over the years and the Windows version just won the 2002 World Class Award From PC World.
    • netOctopus -- Network-based system management for Macintosh and Windows. "4000 sites ... maybe 150 agents (managed systems) are installed at each site, which would make about 600,000 systems.".
    • eSite -- Web site server platform used by several Yellow Pages companies to provide web sites to advertisers.
    • eCare -- Web-based customer support. The Macintosh and Windows clients are in C++.
  • Nokia:
    • Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).
    • MSC/HLR
    • Most of the software for the N-series (and other "smart phones").
  • Nullsoft: All Nullsoft products are C++ (Winamp, NSI, etc.) and many are open source.
  • Programming Research: QAC++: Analysis product for C++.
  • Propellerhead Reason: Reason is a virtual studio rack with all the tools and instruments you need to turn your ideas into music.
  • Radiometer Medical A/S: Advanced medical instruments and applications handling patient-critical information on daily basis in over a thousand hospitals worldwide.
    • Bloog-gas analyzers: Medical blood analysis instruments running a database-based application. Appart from the GUI, this application is entirely written in C++
    • Blood-gas instruments management system: Distributed data management application written entirely in C++ (using the ACE framework in TAO CORBA), providing monitoring and reporting facilites.
  • Rain Bird Corporation: Maxicom2 irrigation control system. A Maxicom2 controls the irrigation for a large commercial site or distributed sites from a single central control PC. Communication with remote distributed controllers is via dialup telephone, cellular, radio, fiber optics, etc. Users include: Major amusement/theme parks, international airports, several colleges, county parks, and corporate headquarters.
  • Reliable Software: Co-op, A peer-to-peer version control system.
  • Renaissance Technologies: Financial analysis and trading software.
  • SAP DB: an "Enterprise Open Source Database" is written in a mix of Pascal, C and C++. But newer parts and rewrites of older parts are implemented in C++: "Release 7.4: 1088 C++ of 3392 source files".
  • Scansoft: Dragon Naturally Speaking. An award winning continuous speech dictation system. Originally developed by "Dragon Systems".
  • SGI: OpenInventor, a 3D graphics framework and tool kit built on top of OpenGL. Open Inventor serves as the basis for the VRML (Virtual Reality Modeling Language) standard.
  • Siemens: Major medical systems (often using ACE for convenience and portability).
  • Sophis: Cross-asset, front-to-back portfolio and risk management solutions: "sed world-wide by leading financial institutions".
  • Southwest airlines: Their website, flight reservations, flight status, frequent flyer program, etc.
  • Squid: Optimising Web Delivery.
  • Sun:
    • The HotSpot Java Virtual Machine is written in C++ (this is the leading edge, high performance replacement for Sun's "classic JVM" which was written in C).
    • Sun's compilers have major components written in C++, in particular the C++ front end, parts of the Fortran 95 front end, and the SPARC back end.
    • Parts of Solaris are written in C++, though the external interface is usually crafted to look like C, for compatibility and stability reasons.
    • OpenOffice "The Open Source Office Suite": "[...] the whole technology is based on a platform-independent approach. Less than 10% of the code is platform dependent. This acts as an abstraction layer for the upper software components. Because of the availability of C++-Compilers on every major platform, C++ is used as an implementation language. This allows to port the OpenOffice.org technology to a wide range of different platforms." "[...] It is a complex application consisting mainly of C++ code employing templates and exception handling and supporting independent language binding for a distributed component based architecture."
  • Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones.
  • Thomson Reuters: Eikon is a leading desktop product for finance professionals, mainly developed in C++ (some parts in C#). It is actually around 4M loc.
  • UIQ Technology: UIQ, an open software user interface platform for mobile phones, used by the world's leading mobile phone manufacturers. It is for phones running the Symbian OS. UIQ 3 is used in the Sony Ericsson M600, P990 and W950.
  • University of Karlsruhe: L4Ka: pistachio, a microkernel implemented in pure C++.
  • Vodaphone: Mobile phone infrastructure, incl. provisioning and billing.
  • wxWidgets (formerly wxWindows): Cross platform widget set / toolkit (open source).
  • WAM!NET: "Transmission Manager" ISDN and TCP/IP-based data transfer software, formerly known as 4-Sight ISDN Manager - integrates ISDN support with the software to connect to WAM!NET's managed WAN.
  • ZeroC: Provides ICE, a distributed object-oriented computing infrastructure with a modern C++ mapping. ICE is written in portable C++ and compiles with a wide range of C++ compilers. ICE is used for games and massive training simulations.

    Application areas and applications not clearly associated with a single organization:

  • The CDE desktop (the standard desktop on many UNIX systems) is written in C++.
  • Computational Geometry: CGAL Open Source Project, the Computational Geometry Algorithm Library, provides state of the art geometric data structures and algorithms. The major design goals are high performance, robustness and flexibility. To achieve the latter the designers of CGAL opted for the generic programming paradigm, and gave CGAL the look and feel of the STL. It is also commercially available as supported product from the GeometryFactory.
  • CORBA ORBs: MICO, omniORB, Orbix, TAO.
  • Games: Doom III engine. Sierra On-line: Birthright, Hellfire, Football Pro, Bullrider I & II, Trophy Bear, Kings Quest, Antara, Hoyle Card games suite, SWAT, and too many others to list...Blizzard: StarCraft, StarCraft: Brood War, Diablo I, Diablo II: Lord of Destruction, Warcraft III, World of Warcraft. Quicksilver: Shanghai Second Dynasty, Shanghai Mah Jongg Essentials, Starfleet Command, Invictus, PBS's Heritage: Civilization and the Jews, Master of Orion III, CS-XII. Microsoft: all games. EA: video game engine. Byond: a "world" development platform.
  • Interactive graphics:
    • Virtual Harlem (project at University of Illinois at Chicago and Central Missouri State University) is a learning environment that lets students experience the Harlem Renaissance of the 1920s and 1930s as a cultural field trip. Virtual Harlem is built on top of on top of a high-level VR scripting framework called Yggdrasil written in C++ using other C++ Libraries and freameworks:
      • SGI's OpenGL Performer graphics library.
      • CAVElib VR library.
      • CAVEGui is a graphical interface tool that provides interaction with a CAVE application.
      • CAVERNsoft G2 an Open Source C++ ready2ware toolkit for building collaborative networked applications.
      • COANIM (or the Collaborative Animator) is the application for viewing 3D content over AGAVE. The overall concept behind AGAVE is to append a low-cost PC-based graphics workstation to an Access Grid node that can be used to project 3D stereoscopic computer graphics to allow collaborators to share 3D content.
      • Coin is a high-level 3D graphics librarwith a C++ Application Programming Interface. Coin uses scenegraph data structureto render real-time graphics suitable for mostly all kinds of scientific anengineering visualization applications.
      • Agave: Access grid augmented virtual environment.
  • KDE from linux is written in C++. K Desktop Environment, is a powerful Open Source graphical desktop environment for Unix workstations. It is one of the leading desktop environments for Linux. It consists of about 300 different packages written in C++, including an office suite, a browser, development tools, games, and multimedia apps.
  • a major ballistic missile defense system being done using C++.
  • telephone systems: I think it would be almost easier to list the systems which aren't written in C++, at least here in Europe:
    • C++ is the only development language used for Alcatel transmission systems, both for network management (using ILog Views) and the actual transmission equipment. FWIW, the major transmission nodes (Frankfurt, Berlin, Munich, and another somewhere in northern Germany -- Cologne or Hamburg, I think) in Germany are all 100% C++. All telephone calls between different regions in Germany pass through one of these machines.
    • T-Mobile (the largest German cellular operator) uses C++ for both its billing system and for most of its WAP portal -- dynamic allocation of IP addresses, etc.
    Put differently, anyone using a telephone in Germany depends on code written in C++ -- that's a lot of users:-). What counts as a user? The main telephone transmission nodes in Germany (and I'm pretty sure France as well) are written in C++. And I can't imagine anyone in the country who doesn't use a telephone -- does that count as 80 million (140 million with France) users of C++?
  • SETI@home Huge collaborative project to analyse data to find signs for extraterrestrial life. Partly written in C++.
  • Web development support library Poco. Here is list of poco users.
======================

Source: http://www2.research.att.com/~bs/applications.html

======================

My comments:

Have you ever asked yourself if your mother was conceived using C++? Or else, if C++ code is present in your DNA?

It's impressive the number of most professional, high performance, high security software, games that is currently written in C++, quite likely what you are using to read this too, your browser.

Such a vast number of important applications once led me to learn C++, pursing a career as a great programmer of that language, also paying a high amount of money for a course, till I unfortunately realized that it's extremely hard to become a C++ programmer, and join the market here in Brazil. Java and .NET dominate the market of commercial applications, what makes me conclude that nothing of the aforementioned is developed in Brazil, and Brazil does not program with C++ at the point of finding opportunities in the market. The few existing positions I came to know all required at least 3 years of experience, but the question is, how to acquire that experience without first joining the market for a junior or an internship position? It's rather complicated!

Though currently involved with Java and some .NET here and there, I still dream of obtaining a C++ position, and do some serious development, for high salaries as the ones I see in the USA (usually 3 or 4 times more the ones in Brazil).

Hopefully, now that I'm attending Engineering at the university, I'll be closer to C++ and some Engineering related stuff that may open C++ doors for me. This time, pretty away from "ordinary" commercial applications, but to program toward a scientific realm.

If time allows, the open source communities is another spot to visit with numerous C++ projects of all conceivable natures. I believe that, come what may, to gain money with C++ is not something for the short-run in this country, maybe a first step would be gaining some experience from the open source community, doing some serious programming over there, and then, to inform in my resume: "I've got 3 year experience as a C++ developer".

Let's see what the future reserves, and may the Engineering field present new paths to me.

Sunday, August 7, 2011

Apache and Oracle warn of serious Java 7 compiler bugs

The newly released Java upgrade suffers hotspot-compiler problems that affect Lucene and Solr


It looks like a few bugs have crashed Oracle's Java 7 release party that can wreak havoc on Apache Project applications. The news likely will come as a disappointment to fans of Java, who've waited five long years for a major update to the language.

Released just today, Java 7 includes hotspot-compiler optimizations that miscompile certain loops, potentially affecting projects such as Apache Lucene Core, Apache Solr, and possibly others, according to a warning from the Apache Project. At best, the bugs only cause JVMs to crash; in other cases, they result in miscalculations that can lead to application bugginess.

Oracle, too, is aware of the bugs, which were spotted five days before Java 7 was released; warnings are posted on the Sun Developer Network. The company has said it will fix the problems in the next service release.

The Apache Project outlined the specifics of problems users might face running Java 7. Solr users sticking with the default configuration "will see Java crashing with SIGSEGV as soon as they start to index documents, as one affected part is the well-known Porter stemmer." Other loops in Lucene may be miscompiled, too, according to Apache Project, which can lead to index corruption.

Notably, Java 6 users can also be hurt by the bugs if they use one of the JVM options that are not enabled by default, including -XX:+OptimizeStringConcat and -XX:+AggressiveOpts.

The bottom line, per Apache Project: Don't use Apache Lucene/Solr with Java 7 releases before Update 2. If you do, the group recommends that you at least disable loop optimizations using the -XX:-UseLoopPredicate JVM option to avoid the risk of index corruptions. The Apache Project strongly recommended that users avoid running any of the hotspot optimization switches in any version of Java without extensive testing.

Additionally, Apache Project advised that users who upgrade to Java 7 may need to reindex, "because the Unicode version shipped with Java 7 changed and tokenization behaves differently (e.g. lowercasing)." More information is available in theJRE_VERSION_MIGRATION.txt file that comes with the distribution package.

This story, "Apache and Oracle warn of serious Java 7 compiler bugs," was originally published at InfoWorld.com. Get the first word on what the important tech news really means with the InfoWorld Tech Watch blog. For the latest developments in business technology news, follow InfoWorld.com on Twitter.

================================

Source: http://www.javaworld.com/javaworld/jw-07-2011/110729-java7-compiler-bugs.html

Oracle: Java's worst enemy

The buggy Java SE 7 release is only the latest misstep in a mounting litany of bad behavior


Oracle shipped Java SE 7 with a serious, showstopping bug, and who was the first to alert the Java community? The Apache Foundation. Oh, the irony.

This is the same Apache Foundation that resigned from the Java Community Process (JCP) executive committee in protest after Oracle repeatedly refused to give it access to the Java Technology Compatibility Kit (TCK).

[ Neil McAllister reveals the most dangerous programming mistakes. | Get software development news and insights fromInfoWorld's Developer World newsletter. | And sharpen your Java skills with the JavaWorld Enterprise Java newsletter. ]

It's the same Apache Foundation that developed Harmony, an open source implementation of the Java platform. Google used Harmony to build its Android mobile OS, which is now the subject of a multi-billion-dollar lawsuit from Oracle alleging intellectual property violations. Oracle has subpoenaed documents from the Apache Foundation to help make its case. Nobody is sure what this means for other Harmony users.

It seems as if Oracle would like nothing better than to stomp Apache and its open source Java efforts clean out of existence. And that's a shame, because at this point, Apache is doing a lot more good for the Java community than Oracle is.

Java SE 7's Hotspot JVM: Optimized to death
The Java SE 7 bug itself is the result of a rookie mistake.

The Hotspot JVM includes a number of optimization modes that can make your code run faster in some cases. In other cases, those same optimizations can have unintended, negative consequences. In one of the optimization modes in Java SE 7, there is a bug that can cause the JVM to miscalculate loops, which can result in various failures, ranging from segmentation faults to data corruption.

The same problem shows up in Java SE 6 when you enable the same optimizations, so we can't blame Oracle for the code that caused the bug. What Oracle did do in Java SE 7, however, was to enable the faulty optimization by default. That wasn't true for earlier versions.

Anyone who's ever used a compiler knows you don't go enabling aggressive optimizations until you're good and sure your code runs without them -- and sometimes not even then. Computer science theorist Michael A. Jackson offers two succinct rules on the subject:

  1. The First Rule of Program Optimization: Don't do it.
  2. The Second Rule of Program Optimization (for experts only!): Don't do it yet.

Even if you're only asking the compiler to find ways to improve performance, rather than tweaking the code yourself, you shouldn't play around with optimization options unless you're sure you know what the compiler is doing. That's why most compiler optimizations default to "off."

But what Oracle did is even worse because these optimizations aren't a feature of the Java source code compiler but of the Hotspot JVM's Just-In-Time (JIT) compiler, which translates Java bytecode into native machine code at runtime.

In other words, the new JVM will break your code on the fly as it executes, even if you didn't try to optimize it at all when you compiled it. Even programs that were compiled with the Java SE 6 compiler and run fine on the Java SE 6 JVM fall prey to the same optimization bugs when run under Java SE 7 (unless you have the foresight to disable the optimizations manually).

Java SE 7: Rushed out the door, bugs and all
Finding a severe bug in Java SE 7 normally would be forgivable, but Oracle's behavior in the matter has been downright disgraceful.

At the time the Apache Foundation resigned from the JCP executive committee, Oracle accused the foundation of holding back the progress of Java. In twin statements with eerily coordinated wording, Oracle vice presidents Adam Messinger and Don Deutschboth repeated -- chanted, really -- that Oracle must "move Java forward" and that the Apache Foundation should get in line.

Now we learn that Oracle knew about the Java SE 7 bug fully five days before it shipped the product. And yet it shipped anyway because five days wasn't enough time to fix the problem.

I'm slapping my forehead here. Seriously? The Java community has been waiting five years for Java SE 7, but Oracle was so desperate to "move Java forward" that it couldn't wait any longer, even when it knew it was going to ship a product that contained a major flaw?

I'm reminded of all those years GM shipped shoddy, defective automobiles because nobody was willing to stop the assembly line, even when they saw a problem. This is American innovation at its finest?

Oracle reportedly says it will fix the problem in its next service release -- whenever that might be. Oracle typically issues security bugs on a quarterly basis, but it also issues individual fixes for bugs that are deemed too serious to wait until the next update. It's not clear where this particular bug falls. Wouldn't it be funny if the Java SE 7 release was deemed too important to wait, but fixing its serious bugs wasn't?

A shameful episode for Java
And in the midst of it all we have the Apache Foundation -- sidelined by Oracle, yet still contributing to the Java community in more ways than I dare count.

It was only natural that the foundation should discover the bug, as it maintains some of the most important and popular Java tools out there. The projects that noticed the bug were Solr and Lucene, both parts of a high-performance search engine. In addition to those, however, other prominent Java-related Apache projects include Ant, Cocoon, Geronimo, Jakarta, Struts, and Tomcat -- names that should be familiar to any Java developer. In fact, Apache probably does more to benefit Java developers than any single organization outside Oracle itself.

And yet when the Apache Foundation pointed out a glaring flaw in the latest version of Java, it didn't get so much as a thank you, and Oracle didn't so much as issue a mea culpa. So much for community-driven Java.

If I made my living as a Java developer, I would be pounding the walls right now. Oracle should be ashamed of itself. It's almost as if it doesn't care about its customers at all -- ah, but what am I saying?

This article, "Oracle: Java's worst enemy," originally appeared at InfoWorld.com. Read more of Neil McAllister's Fatal Exception blog and follow the latest news in programming at InfoWorld.com. For the latest business technology news, followInfoWorld.com on Twitter.

============================

Source: http://www.javaworld.com/javaworld/jw-08-2011/110804-fatal-exception.html?page=1