vnsjava
La mejor crítica a Java
Enero 1st, 1970 - [Enlace local]
He visto muchas personas criticando a Java en el Internet, pero todos estos comentario me parecían banales porque las razones que daban era totalmente sin fundamento, sin mencionar de se notaba la poco experiencia de programación con java que tenían (se veía solo con leer lo que decían :-).
Leí este artículo y me pareció estupendo, la persona que lo escribió si parece tener experiencia de programación en Java y no solo eso yo mismo he tenido alguno de los problemas mencionados y que he tenido que solucionar. A diferencia de muchos críticos, el no crítica la sintaxis en si sino el conjunto de api, frameworks y herramientas de desarrollo que se supone tienen que hacer la vida del programador un poco más fácil y productiva. La manera en que un programador de Java resuelve lo problemas día a día.
Por cierto los frameworks de desarrollo web están fuera por serian muy polémico el articulo, en realidad los frameworks web son para otros articulo aparte.
El artículo Dreaming in Java
» Leer más, comentarios, etc...
vnsjava
La mejor crítica a Java
Enero 1st, 1970 - [Enlace local]
He visto muchas personas criticando a Java en el Internet, pero todos estos comentario me parecían banales porque las razones que daban era totalmente sin fundamento, sin mencionar de se notaba la poco experiencia de programación con java que tenían (se veía solo con leer lo que decían :-).
Leí este artículo y me pareció estupendo, la persona que lo escribió si parece tener experiencia de programación en Java y no solo eso yo mismo he tenido alguno de los problemas mencionados y que he tenido que solucionar. A diferencia de muchos críticos, el no crítica la sintaxis en si sino el conjunto de api, frameworks y herramientas de desarrollo que se supone tienen que hacer la vida del programador un poco más fácil y productiva. La manera en que un programador de Java resuelve lo problemas día a día.
Por cierto los frameworks de desarrollo web están fuera por serian muy polémico el articulo, en realidad los frameworks web son para otros articulo aparte.
El artículo Dreaming in Java
» Leer más, comentarios, etc...
vnsjava
WebServices con Java utilizando Axis
Enero 1st, 1970 - [Enlace local]
Para los que no lo han usado se lo recominedo, utilizar Axis es un placer.
Para tener una idea de como funciona les recomiendo leerse el tutorial de la pagina oficial, y si eres como yo "fast", entonces ahi una presentacion tutorial en HP muy completo de desarrollo agil.
http://ws.apache.org/axis/
Tutorial de HP
» Leer más, comentarios, etc...
vnsjava
Apple el renacido competidor de Micro$oft
Enero 1st, 1970 - [Enlace local]

Todos saben la noticia de que apple vale > Dell, dicho por el propio Steve Jobs, bueno el problema es que Apple tambien se mudo a procesadores intel los cual quiere decir que COMPETIRA más directamente en el mercado contra M$ y no solo eso el valor de las acciones de Apple son ya > que las de M$.
Sun no se atras y Google ni se diga ;-).
Ha de esperarse muchas cosa de esta compañia este año. Y de las otras tambien ;-)
AAPL $ 79.035 3.4551 4.19% 60,585,718 NASDAQ-NM
MSFT $ 27.02 0.19 0.71% 60,382,450 NASDAQ-NM
» Leer más, comentarios, etc...
vnsjava
JXTA P2P en Java
Enero 1st, 1970 - [Enlace local]
Teórico y lo más importante práctico tambien ;-) muestra como hacer un Hello JXTA!
http://www.onjava.com/pub/a/onjava/2001/04/25/jxta.html?page=1
Muy teórico pero importante sobre la arquitectura
http://www.javaworld.com/javaworld/jw-10-2001/jw-1019-jxta.html
Una pagina a tener en cuenta: http://www.jxta.org/
JXTA es un protocolo de P2P desarrollado por Sun y luego liberado como open source que se a convertido en estandar para la industria.
» Leer más, comentarios, etc...
vnsjava
Stevey en el pais de las maravillas (Google)
Enero 1st, 1970 - [Enlace local]
Interesante artculo de Stevey para decirnos que vivimos en un mundo de mentira :) que sincero, y de como se debe trabajar segun Google.
» Leer más, comentarios, etc...
vnsjava
Los 10 lenguajes más demandados
Enero 1st, 1970 - [Enlace local]
En este artículo se confirma mas aun lo que dije anteriormente, para mis amigos que todavia estan pensando que M$ domina el negocio de las computadoras no significa que contole en que se programa.
» Leer más, comentarios, etc...
vnsjava
Grammar DUDU+ mi lenguaje de programación
Enero 1st, 1970 - [Enlace local]
Este es el grammar del lenguaje DUDU+, este grammar (BNF production) esta hecho para la generación de un parser con la herramienta javacc. Como se ve la sintaxis es la de java pero con otras reglas, ya que se trata de javacc, que es el generador de parser más popular, se puede encontrar documentación de este en la página: https://javacc.dev.java.net/ . Les recomiendo que utilicen el mailling list en el cual hay personas dispuestas a ayudarte :-D.
/*
* DUDU+ codename MiniJava
* HECHO... in Dominican Republic
* author VГctor Sosa vns java
*/
options{
LOOKAHEAD = 1;
STATIC = false;
JAVA_UNICODE_ESCAPE = true;
}
PARSER_BEGIN(MiniJava)
import java.util.*;
public class MiniJava {
public static void main(String[] args) throws ParseException, TokenMgrError {
MiniJava parser;
String file = null;
long time = 0;
long parseTime = 0;
long startTime = 0;
if (args.length == 0)
{
System.out.println("Error messages...");
return;
} else if ( args.length == 1 ){
file = args[0];
System.out.println("Start parsing...");
try
{
parser = new MiniJava(new java.io.FileInputStream(file));
} catch ( java.io.FileNotFoundException e ) {
System.out.println("Parser error: Filename " + file + " not found." );
return;
}
} else {
System.out.println("Debe escribir: java MiniJava inputfile");
return;
}
try
{
startTime = System.currentTimeMillis();
parser.Start();
parseTime = System.currentTimeMillis();
time = parseTime - startTime;
System.out.println(" Time of parsing: " + time + " ms");
System.out.println(" DuDu successfully end");
} catch ( ParseException pex) {
System.out.println( pex.getMessage() );
System.out.println(" ParserException during parse file" );
}
}/* main method*/
}
PARSER_END(MiniJava)
/* Eat white space and comment*/
SKIP : {
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")>
| <"/*" (~["*"])* "*" ("*" | ~["*","/"] (~["*"])* "*")* "/">
}
TOKEN : /* RESERVED WORDS AND LITERALS */
{
< style="color: rgb(42, 0, 255);">"boolean" >
| < style="color: rgb(42, 0, 255);">"byte" >
| < style="color: rgb(42, 0, 255);">"char" >
| < style="color: rgb(42, 0, 255);">"class" >
| < style="color: rgb(42, 0, 255);">"double" >
| < style="color: rgb(42, 0, 255);">"false" >
| < style="color: rgb(42, 0, 255);">"float" >
| < style="color: rgb(42, 0, 255);">"final" >
| < style="color: rgb(42, 0, 255);">"int" >
| < style="color: rgb(42, 0, 255);">"long" >
| < style="color: rgb(42, 0, 255);">"public" >
| < style="color: rgb(42, 0, 255);">"short" >
| < style="color: rgb(42, 0, 255);">"static" >
| < style="color: rgb(42, 0, 255);">"true" >
| < style="color: rgb(42, 0, 255);">"void" >
| < style="color: rgb(42, 0, 255);">"new" >
| < style="color: rgb(42, 0, 255);">"make" >
| < style="color: rgb(42, 0, 255);">"stack" >
| < style="color: rgb(42, 0, 255);">"repeat" >
| < style="color: rgb(42, 0, 255);">"until" >
| < style="color: rgb(42, 0, 255);">"addStack" >
| < style="color: rgb(42, 0, 255);">"ordStack" >
| < style="color: rgb(42, 0, 255);">"ascendente" >
| < style="color: rgb(42, 0, 255);">"descendente" >
}
TOKEN : /* SEPARATORS */
{
< style="color: rgb(42, 0, 255);">"(" >
| < style="color: rgb(42, 0, 255);">")" >
| < style="color: rgb(42, 0, 255);">"{" >
| < style="color: rgb(42, 0, 255);">"}" >
| < style="color: rgb(42, 0, 255);">"[" >
| < style="color: rgb(42, 0, 255);">"]" >
| < style="color: rgb(42, 0, 255);">";" >
| < style="color: rgb(42, 0, 255);">"," >
}
TOKEN : /* OPERATORS */
{
< style="color: rgb(42, 0, 255);">"=" >
| < style="color: rgb(42, 0, 255);">"++" >
| < style="color: rgb(42, 0, 255);">"--" >
| < style="color: rgb(42, 0, 255);">"+" >
| < style="color: rgb(42, 0, 255);">"-" >
| < style="color: rgb(42, 0, 255);">"*" >
| < style="color: rgb(42, 0, 255);">"/" >
}
TOKEN : /* LITERALS */
{
<> (["l","L"])?
>
|
< #DECIMAL_LITERAL: ["0"-"9"] (["0"-"9"])* >
|
< style="color: rgb(42, 0, 255);">"0"-"9"])+ "." (["0"-"9"])* ( <> )? (["f","F","d","D"])?
| "." (["0"-"9"])+ ( <>)? (["f","F","d","D"])?
| (["0"-"9"])+ <> (["f","F","d","D"])?
| (["0"-"9"])+ (<>)? ["f","F","d","D"]
>
|
< #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
< style="color: rgb(42, 0, 255);">"'"
( (~["'","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
"'"
>
|
< style="color: rgb(42, 0, 255);">"\""
( (~["\"","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)*
"\""
>
}
TOKEN : {
<> ( <> | <> )* >
| <#LETTER: ["$","A"-"Z","_","a"-"z"]>
| <#DIGIT: ["0"-"9"] >
}
/*********************************************
* THE MINIJAVA LANGUAGE GRAMMAR STARTS HERE *
*********************************************/
/*
* Struts.
*/
void Start() throws ParseException :
{}
{
(TypeDeclaration() )*
}
void TypeDeclaration() :
{}
{
ClassDeclaration()
}
/*
* Declaracion de clases
*/
void ClassDeclaration() :
{}
{
( "final" | "public" | "static" )* "class" <>
"{" ( ClassBodyDeclaration() )* "}"
}
void ClassBodyDeclaration() :
{}
{
LOOKAHEAD(2)
FieldDeclaration()
|
Statement()
}
void FieldDeclaration() :
{}
{
( "public" | "static" | "final" )*
Type() VariableDeclarator() ( "," VariableDeclarator() )* ";"
}
void VariableDeclarator() :
{}
{
VariableDeclaratorId() [ "=" VariableInitializer() ]
}
void VariableDeclaratorId() :
{}
{
<> ( "[" "]" )*
}
void VariableInitializer() :
{}
{
ArrayInitializer()
|
Expression()
}
void ArrayInitializer() :
{}
{
"{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}"
}
/*
* Tipos, nombre y sentencias
*/
void Type() :
{}
{
PrimitiveType() ( "[" "]" )*
}
void PrimitiveType() :
{}
{
"boolean"
|
"char"
|
"byte"
|
"short"
|
"int"
|
"long"
|
"float"
|
"double"
}
void Name() :
{ }
{
<>
}
/*
* Expression syntax
*/
void Expression() :
{}
{
ConditionalExpression() [ AssignmentOperator() AdditiveExpression() ]
}
void AssignmentOperator() :
{}
{
"="
}
void ConditionalExpression() :
{}
{
ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]
}
void ConditionalOrExpression() :
{}
{
ConditionalAndExpression() ( "||" ConditionalAndExpression() )*
}
void ConditionalAndExpression() :
{}
{
EqualityExpression() ( "&&" EqualityExpression() )*
}
void EqualityExpression() :
{}
{
RelationalExpression() ( ( "==" | "!=" ) RelationalExpression() )*
}
void RelationalExpression() :
{}
{
AdditiveExpression() ( ( "<" | ">" | "<=" | ">=" ) AdditiveExpression() )*
}
void AdditiveExpression() :
{}
{
MultiplicativeExpression() ( LOOKAHEAD(2)( "+" | "-" ) MultiplicativeExpression() )*
}
void MultiplicativeExpression() :
{}
{
UnaryExpression() ( ( "*" | "/" ) UnaryExpression() )*
}
void UnaryExpression() :
{}
{
( "+" | "-" ) UnaryExpression()
|
UnaryExpressionNotPlusMinus()
}
void UnaryExpressionNotPlusMinus() :
{}
{
PostfixExpression()
}
void PostfixExpression() :
{}
{
PrimaryExpression() [ "++" | "--" ]
}
void PrimaryExpression() :
{}
{
PrimaryPrefix() ( PrimarySuffix() )*
}
void PrimaryPrefix() :
{}
{
Literal()
|
"(" Expression() ")"
|
AllocationExpression()
|
Name()
}
void PrimarySuffix() :
{}
{
"[" Expression() "]"
|
LOOKAHEAD(2)
"." "addStack" "(" ( Name() | Literal() ) ")"
|
"." "ordStack" "(" OrdenType() ")"
}
void OrdenType() :
{}
{
"ascendente"
|
"descendente"
}
void Literal() :
{}
{
<>
|
<>
|
<>
|
<>
|
BooleanLiteral()
}
void BooleanLiteral() :
{}
{
"true"
|
"false"
}
void AllocationExpression() :
{}
{
"new" PrimitiveType() ArrayDimsAndInits()
|
MakeStack()
}
void MakeStack() :
{}
{
"make" "stack"
}
void ArrayDimsAndInits() :
{}
{
LOOKAHEAD(2)
( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
|
( "[" "]" )+ ArrayInitializer()
}
void Statement() :
{}
{
Expression() ";"
|
RepeatStatement()
}
void RepeatStatement() :
{}
{
"repeat" Statement() "until" "(" Expression() ")"
}
» Leer más, comentarios, etc...
vnsjava
Grammar DUDU+ mi lenguaje de programación
Enero 1st, 1970 - [Enlace local]
Este es el grammar del lenguaje DUDU+, este grammar (BNF production) esta hecho para la generación de un parser con la herramienta javacc. Como se ve la sintaxis es la de java pero con otras reglas, ya que se trata de javacc, que es el generador de parser más popular, se puede encontrar documentación de este en la página: https://javacc.dev.java.net/ . Les recomiendo que utilicen el mailling list en el cual hay personas dispuestas a ayudarte :-D.
/*
* DUDU+ codename MiniJava
* HECHO... in Dominican Republic
* author VГctor Sosa <victornsosa@gmail.com> vns java
*/
options{
LOOKAHEAD = 1;
STATIC = false;
JAVA_UNICODE_ESCAPE = true;
}
PARSER_BEGIN(MiniJava)
import java.util.*;
public class MiniJava {
public static void main(String[] args) throws ParseException, TokenMgrError {
MiniJava parser;
String file = null;
long time = 0;
long parseTime = 0;
long startTime = 0;
if (args.length == 0)
{
System.out.println("Error messages...");
return;
} else if ( args.length == 1 ){
file = args[0];
System.out.println("Start parsing...");
try
{
parser = new MiniJava(new java.io.FileInputStream(file));
} catch ( java.io.FileNotFoundException e ) {
System.out.println("Parser error: Filename " + file + " not found." );
return;
}
} else {
System.out.println("Debe escribir: java MiniJava inputfile");
return;
}
try
{
startTime = System.currentTimeMillis();
parser.Start();
parseTime = System.currentTimeMillis();
time = parseTime - startTime;
System.out.println(" Time of parsing: " + time + " ms");
System.out.println(" DuDu successfully end");
} catch ( ParseException pex) {
System.out.println( pex.getMessage() );
System.out.println(" ParserException during parse file" );
}
}/* main method*/
}
PARSER_END(MiniJava)
/* Eat white space and comment*/
SKIP : {
" "
| "\t"
| "\n"
| "\r"
| <"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")>
| <"/*" (~["*"])* "*" ("*" | ~["*","/"] (~["*"])* "*")* "/">
}
TOKEN : /* RESERVED WORDS AND LITERALS */
{
< BOOLEAN: "boolean" >
| < BYTE: "byte" >
| < CHAR: "char" >
| < CLASS: "class" >
| < DOUBLE: "double" >
| < FALSE: "false" >
| < FLOAT: "float" >
| < FINAL: "final" >
| < INT: "int" >
| < LONG: "long" >
| < PUBLIC: "public" >
| < SHORT: "short" >
| < STATIC: "static" >
| < TRUE: "true" >
| < VOID: "void" >
| < NEW: "new" >
| < MAKE: "make" >
| < STACK: "stack" >
| < REPEAT: "repeat" >
| < UNTIL: "until" >
| < ADDSTACK: "addStack" >
| < ORDSTACK: "ordStack" >
| < ASCENDENTE: "ascendente" >
| < DESCENDENTE: "descendente" >
}
TOKEN : /* SEPARATORS */
{
< LPAREN: "(" >
| < RPAREN: ")" >
| < LBRACE: "{" >
| < RBRACE: "}" >
| < LBRACKET: "[" >
| < RBRACKET: "]" >
| < SEMICOLON: ";" >
| < COMMA: "," >
}
TOKEN : /* OPERATORS */
{
< ASSIGN: "=" >
| < INCR: "++" >
| < DECR: "--" >
| < PLUS: "+" >
| < MINUS: "-" >
| < STAR: "*" >
| < SLASH: "/" >
}
TOKEN : /* LITERALS */
{
< INTEGER_LITERAL:
< DECIMAL_LITERAL > (["l","L"])?
>
|
< #DECIMAL_LITERAL: ["0"-"9"] (["0"-"9"])* >
|
< FLOATING_POINT_LITERAL:
(["0"-"9"])+ "." (["0"-"9"])* ( < EXPONENT > )? (["f","F","d","D"])?
| "." (["0"-"9"])+ ( < EXPONENT >)? (["f","F","d","D"])?
| (["0"-"9"])+ < EXPONENT > (["f","F","d","D"])?
| (["0"-"9"])+ (< EXPONENT >)? ["f","F","d","D"]
>
|
< #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
< CHARACTER_LITERAL:
"'"
( (~["'","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
"'"
>
|
< STRING_LITERAL:
"\""
( (~["\"","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)*
"\""
>
}
TOKEN : {
<IDENTIFIER: < LETTER > ( < LETTER > | < DIGIT > )*>
| <#LETTER: ["$","A"-"Z","_","a"-"z"]>
| <#DIGIT: ["0"-"9"]>
}
/*********************************************
* THE MINIJAVA LANGUAGE GRAMMAR STARTS HERE *
*********************************************/
/*
* Struts.
*/
void Start() throws ParseException :
{}
{
(TypeDeclaration() )*
}
void TypeDeclaration() :
{}
{
ClassDeclaration()
}
/*
* Declaracion de clases
*/
void ClassDeclaration() :
{}
{
( "final" | "public" | "static" )* "class" < IDENTIFIER >
"{" ( ClassBodyDeclaration() )* "}"
}
void ClassBodyDeclaration() :
{}
{
LOOKAHEAD(2)
FieldDeclaration()
|
Statement()
}
void FieldDeclaration() :
{}
{
( "public" | "static" | "final" )*
Type() VariableDeclarator() ( "," VariableDeclarator() )* ";"
}
void VariableDeclarator() :
{}
{
VariableDeclaratorId() [ "=" VariableInitializer() ]
}
void VariableDeclaratorId() :
{}
{
< IDENTIFIER > ( "[" "]" )*
}
void VariableInitializer() :
{}
{
ArrayInitializer()
|
Expression()
}
void ArrayInitializer() :
{}
{
"{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}"
}
/*
* Tipos, nombre y sentencias
*/
void Type() :
{}
{
PrimitiveType() ( "[" "]" )*
}
void PrimitiveType() :
{}
{
"boolean"
|
"char"
|
"byte"
|
"short"
|
"int"
|
"long"
|
"float"
|
"double"
}
void Name() :
{ }
{
< IDENTIFIER >
}
/*
* Expression syntax
*/
void Expression() :
{}
{
ConditionalExpression() [ AssignmentOperator() AdditiveExpression() ]
}
void AssignmentOperator() :
{}
{
"="
}
void ConditionalExpression() :
{}
{
ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]
}
void ConditionalOrExpression() :
{}
{
ConditionalAndExpression() ( "||" ConditionalAndExpression() )*
}
void ConditionalAndExpression() :
{}
{
EqualityExpression() ( "&&" EqualityExpression() )*
}
void EqualityExpression() :
{}
{
RelationalExpression() ( ( "==" | "!=" ) RelationalExpression() )*
}
void RelationalExpression() :
{}
{
AdditiveExpression() ( ( "<" | ">" | "<=" | ">=" ) AdditiveExpression() )*
}
void AdditiveExpression() :
{}
{
MultiplicativeExpression() ( LOOKAHEAD(2)( "+" | "-" ) MultiplicativeExpression() )*
}
void MultiplicativeExpression() :
{}
{
UnaryExpression() ( ( "*" | "/" ) UnaryExpression() )*
}
void UnaryExpression() :
{}
{
( "+" | "-" ) UnaryExpression()
|
UnaryExpressionNotPlusMinus()
}
void UnaryExpressionNotPlusMinus() :
{}
{
PostfixExpression()
}
void PostfixExpression() :
{}
{
PrimaryExpression() [ "++" | "--" ]
}
void PrimaryExpression() :
{}
{
PrimaryPrefix() ( PrimarySuffix() )*
}
void PrimaryPrefix() :
{}
{
Literal()
|
"(" Expression() ")"
|
AllocationExpression()
|
Name()
}
void PrimarySuffix() :
{}
{
"[" Expression() "]"
|
LOOKAHEAD(2)
"." "addStack" "(" ( Name() | Literal() ) ")"
|
"." "ordStack" "(" OrdenType() ")"
}
void OrdenType() :
{}
{
"ascendente"
|
"descendente"
}
void Literal() :
{}
{
< INTEGER_LITERAL >
|
< FLOATING_POINT_LITERAL >
|
< CHARACTER_LITERAL >
|
< STRING_LITERAL >
|
BooleanLiteral()
}
void BooleanLiteral() :
{}
{
"true"
|
"false"
}
void AllocationExpression() :
{}
{
"new" PrimitiveType() ArrayDimsAndInits()
|
MakeStack()
}
void MakeStack() :
{}
{
"make" "stack"
}
void ArrayDimsAndInits() :
{}
{
LOOKAHEAD(2)
( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
|
( "[" "]" )+ ArrayInitializer()
}
void Statement() :
{}
{
Expression() ";"
|
RepeatStatement()
}
void RepeatStatement() :
{}
{
"repeat" Statement() "until" "(" Expression() ")"
}
» Leer más, comentarios, etc...
vnsjava
Stevey en el pais de las maravillas (Google)
Enero 1st, 1970 - [Enlace local]
Interesante artculo de Stevey para decirnos que vivimos en un mundo de mentira :) que sincero, y de como se debe trabajar segun Google.
» Leer más, comentarios, etc...
vnsjava
Los 10 lenguajes más demandados
Enero 1st, 1970 - [Enlace local]
En este artículo se confirma mas aun lo que dije anteriormente, para mis amigos que todavia estan pensando que M$ domina el negocio de las computadoras no significa que contole en que se programa.
» Leer más, comentarios, etc...
gotAPI: referencia on-line para programadores
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Mas de 200 páginas de Business Intelligence
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Links de Ingeniería de Software
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Borland CMMI On Line
Enero 1st, 1970 - [Enlace local]
y como complemento de este tema en el mismo Navegapolis se presenta una sinopsis de los modelos CMM y CMMI
» Leer más, comentarios, etc...
Code Complete
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Software modeling platform - StarUML
Enero 1st, 1970 - [Enlace local]
Soporte a UML 2.0
Personalizable
Soporte a MDA
Extensibilidad y Flexibilidad
y lo mejor es que es gratis
La noticia viene de Dot NEt Pulse
» Leer más, comentarios, etc...
Refactoring Databases Website
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Microsoft Bloggers List
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Mas de inteligencia de negocios
Enero 1st, 1970 - [Enlace local]
Blog de Javier Delgado Bernardo
http://www.bizintelligencepipeline.com/
» Leer más, comentarios, etc...
Herramienta gratuita para gestionar via web, bases de datos distintas
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Sitios interesantes de UML
Enero 1st, 1970 - [Enlace local]
Sitio para bajar el libro O’Reilly - Learning UML v2.0
Página principal del libro
Entendiendo UML
Understanding UML Wiki
Understanding UML Blog
Algunos de estos enlaces pasan a ser parte de los vínculos en el área de UML.
» Leer más, comentarios, etc...
Software Engineering for Internet Applications (MIT Press) eBook
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
SCRUM for Team System
Enero 1st, 1970 - [Enlace local]
» Leer más, comentarios, etc...
Importancia de la Ingenieria de Software en los procesos de desarrollo
Enero 1st, 1970 - [Enlace local]
Bravo por este artículo, creo que la postura ideal no debe ser atacar a las demás áreas llamese programación, pruebas etc. lo adecuado es actuar en conjunto con un solo objetivo crear software y servicios de calidad a nivel de software, tan importante es el lider del proyecto, como el analista y el programador, trabajemos en conjunto.