Buen Libro de Java para principiante/intermedio

Saludos a todos.
yo soy una persona autodidacta y pues bueno ya trabajo pero sobre vb6/sql server por el momento se un poco de vb.net y ando moviendo al muindo de java, compre un libro llamado programador certificado java 2 curso practico 3a ed. de Ra-Ma no esta tan mal, el punto es que si he aprendido hay muchas cosas que aun no comprendo bien o la explicacion es muy vaga para ciertos temas (o quiza entiendo mal xD ) me gustaria un libro de preferencia actualizado pues a nivel medio o algo asi o un poco mas que principiante. me gustaria uno que peuda comprar en una libreria de preferencia no tan caro pero bueno si esta caro no importa ponganlo jejejeje por que eso de estar bajando PDF's e imprimirlos la verdad no es tan bueno (al menos que me compre una tablet china de android como e-reader :p ) me gustaria saber opiniones.
Mi ideal es en un futuro desarrollar para android, pero tambien trabajar sobre Java a nivel Desktop j2ee.
Muchas Gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de CesarAlducin

Buen Inicio

Que tal amigo, pues yo te recomiendo Core Java Volumen 1 y 2, muy buenas referencias para ti que ers Novato en Java,ya despues podremos recomendarte algo mejor para las aplicaciones que piensas desarrollar.

muchas gracias lo checare

muchas gracias lo checare haber donde lo puedo encontrar aqui en mexico de todas maneras se aceptan mas sugerencias xD no sean timidos :p
Gracias

Imagen de neko069

Pues aparte de los que te

Pues aparte de los que te mencionó @CesarAlducin, que son muy buenos, yo te podría recomendar Head First: Java, y bueno, he escuchado, pero nunca he leído uno que se llama Thinking in Java ..

Un "must have" que es más

Un "must have" que es más bien para intermedio - avanzado es: "Effective Java" de Joshua Bloch.

Yo considero que TODOS lo que intenten usar Java de una forma profesional deberían de leerlo y hasta creo que es un tanto irresponsable el no hacerlo.

Es un "eye opener" en mi opinión, pero quizá no sea un buen introductorio.

yo creo que buscare comprar

yo creo que buscare comprar effective java, pero creo q no esta a la venta aqui en mexico =X seguro tendre q pedirlo en amazon o ebay =X bueno si saben alguien q lo venda me dicen no? xD saludos y gracias por sus sugerencias

Imagen de iberck

Effective Java

Lo venden en cualquier librería del centro (si vives en el DF), sin embargo en mi opinión NO es indespensable ni menos "i-respons-able" leer "Effective Java" para convertirte en un buen programador, sólo es un catalizador de tus conocimientos

Imagen de bferro

¿Catalizador de conocimientos?

Me cuesta mucho trabajo entender esa clasificación que has hecho de que el libro "Effective Java" es un catalizador de conocimientos. Lo que sí puedo asegurar es que es un libro magnífico que ojalá que todos los que programan en un lenguaje orientado a objetos lo estudiaran y no solamente lo leyeran.

@iberck soy del df he buscado

@iberck soy del df he buscado en gandhi y el sótano al menos x internet y no lo encuentro no podías decirme q parte del centro o algo así? Muchas gracias a todos
Creo q effective java será mi prox libro solo espero encontrarlo aquí

Imagen de iberck

bferro: con catalizador

bferro:
con catalizador (acelerador) de conocimientos me refiero a que una vez que tengas los conocimientos básicos/intermedios te será de ayuda para temas más avanzados

zen kun:
Yo lo compré hace mucho tiempo en los puestos que están afuera del metro San Juan de Letran

Pues no lo encuentro jiji y

Pues no lo encuentro jiji y en ebay me sale muy caro el envío y eso el estándar poco más de la mitad q cuesta el libro saliéndome unos 800 o más depende la condición del libro pensaba igual comprarme una tablet android china barata para usarla de ebook reader,o si me quiero ver mejor igual hasta un kindle pero no se q tan bueno sea leer sobre esas cosas y más temas de programación q me recomendad?
Gracias

Imagen de bferro

Por qué no echarle a un vistazo a ACM

ACM, como seguramente conocen, es una de las asociaciones más antiguas en el campo de "Computer Science" y afortunadamente ofrece un descuento significativo en su membresía para los residentes en México ( y otros países).

También ofrece la membresía estudiantil que, con la bilioteca digital incluida, tiene un costo de algo más de 40 dólares por año, que no es nada comparado con todos los recursos digitales que ofrece.

ACM brinda entre sus recursos el Learning Center, sitio con muchos cursos gratuitos en línea y cientos y cientos de libros como los de Safari Book Online.

El libro Effective Java, al que se hace alusión en este thread, está disponible en línea para los miembros de ACM.

El acceso a libros funciona mediante My Bookshelf en el cual puedo tener a la vez 10 libros, los cuales, una vez seleccionados permanecen en tu librero por un tiempo determinado. Una vez transcurrido este tiempo puedes eliminarlo y tener acceso a otro.

Para los que también desean estudiar algo más que un lenguaje, tienen acceso a la Biblioteca Digital (si se paga en la membresía) con decenas de revistas y proceedings de los eventos más importantes de "Computer Science" en el mundo

Por supuesto que también se tiene el beneficio y privilegio de pertenecer a una asociación, que con nuestras cuotas impulsa nuestra profesión.

Hace ya muchos años que soy miembro de ACM y puedo decir que vale la pena.

Imagen de AlexSnake

Otra opción

Yo busque el libro en internet y ya lo encontre, inclusive hay una 2da Edicion, que es la mas reciente. Lo malo de esto es que fomentas la pirateria y tantos lios de copyrigth, pero si lo llego a encontrar en las ubicaciones que mencionan no dudaria en comprarlo.

si pero lo que me refiero no

si pero lo que me refiero no es eso es bajarmela en la version kindle, o sea de paga, quiza primero en pdf para ver si me gusta o no o creo q vale la pena y despues la version electronica de paga pero no se que tan buena idea sea una tablet o kindle por que para que me lo manden pues si sale caro igual conviene una version electronica y furturos libros igual los podria leer ahi, pero no se si sea buena idea uno de programacion en version electronica o recomiendan mejor papel ejjejje alguien ha intentado esto?

Imagen de ezamudio

ebooks

Yo de hecho pienso que los únicos libros que vale la pena tener como ebooks son los de programación, y tecnología en general, porque se vuelven obsoletos rápido; una obra literaria puede seguir vigente después de varias décadas o incluso siglos, pero un libro de programación realmente dura poco, es raro el que siga siendo vigente después de muchos años (me vienen a la mente el de C de Kernighan y Ritchie, o la serie "The Art of Programming" the Knuth). Pero por ejemplo un libro de programación en Java 1.3 pues ya está muy incompleto, incluso uno de Java 1.4. Uno de J2EE ya ni viene al caso mucho de lo que dice; uno de Spring 1.0 también ya está bastante obsoleto. Yo tengo algunos libros así y bueno, sólo se me ocurre adoptar un gato para usar las hojas de estos libros para cubrir el fondo de su arenero, no les veo ya otro uso. Si fueran ebooks simplemente los borraría de mi disco duro.

Imagen de AlexSnake

Cierto muy cierto

Bueno aun que yo les daria otro uso a los libros de java que tengo.. es correcto lo que menciona @ezamudio despues de un tiempo ya no estan actualizados pero algunos de ellos van a tener las bases y por el momento creo que no han cambiado y despues que lo sabes ya no lo requieres.

buen punto se desactualizan

buen punto se desactualizan pero creo q cumplen su cometido, enseñar. eso me hace pensar en quizas comprarme el kindle y pues ahi leerlo aunq no se q tan practico sea leer uno de programacion, ya lo cheque en el sotano esta en $650 pues por un poco mas me compro una tablet china que sirve de ebook reader, o un poco mas el kindle con su "e-ink" que segun simula las hojas del libro. quiza la contra es que en muchos lados por miedo a q lo roben no lo podre sacar quiza jajaja pero quiza deberia checar el kindle mmmm no se jajajajaa @ezamudio que opninas?
mas que nada por que viajo en el transporte mucho y es mas factible leerlo en el camino que en la pc
saludos

Effective Java pedido desde

Effective Java pedido desde Amazon el día de hoy con envío hasta la Cd. de México está en $520 .

Hay muchos aspectos de Java que no son tan obvios ni fáciles de entender sin una explicación detallada por un experto. Joshua Bloch fue quién diseño e implementó los paquetes ( o gran parte ) java.util y java.math de Java y quién rediseño para lo que se conoció como Java 2 ( el cambio del modelo Java 1.1.x a java 1.2+ ) y que forma gran parte de lo que es Java hoy en día. Por lo tanto es una persona con autoridad en la materia.

Al leer este libro se pueden entender aspectos más avanzados del lenguaje y/o entender por que muchas de las clases base están hechas como están. Por que hay tantas clases inmutables y por ejemplo como es que varios de ellos hacen copias defensivas y por qué. Incluso viene a manera de ejemplo de "que no hacer" como están hechas algunas otras clases ( como Properties que hereda de Hashtable cuando no había necesidad por ejemplo )

La segunda edición tiene 78 items que explican como usar el lenguaje de manera efectiva ( no enseñan el lenguaje ).

Les dejo traducido el prefacio del libro:


Si un colega tuyo te dijera: "Esposa de mí esta noche manufactura la inusual comida en una casa. Tu te unes?" Tres cosas pasarían por tu mente: La tercera, que has sido invitado a cenar, la segunda, que el Español no es el primer idioma de tu colega; y primera que es un buen acertijo.

Si alguna vez has estudiado un segundo idioma y has intentado usarlo fuera de clase, sabes que hay tres cosas que se deben de dominar: como se estructura el idioma ( gramática ), como nombrar las cosas de las que quieres hablar ( vocabulario ) y los usos y costumbres para decir con efectividad las cosas del día a día ( uso ). Muy a menudo las primeras dos son cubiertas en el salón de clases y generalmente encontrarás a los hablantes nativos aguantándose la risa cuando te estás queriendo dar a entender.

Pasa algo muy similar con los lenguajes de programación. Es necsario entender los fundamentos del lenguaje: es algorítmico, funcional, orientado a objetos? Es necesario saber el vocabulario: qué estructuras de datos, operadores y facilidades son provistas por la biblioteca estándar? Y es necesario estar familiarizado con los usos y costumbres para estructurar efectivamente el código. Los libros de programación generalmente cubren solo las dos primeras partes, o discuten el uso muy puntualmente. Quizá es porque es más fácil escribir sobre las primeras dos. La gramática y el vocabulario son propiedades del lenguaje en sí mismo. Pero el uso es característica de la comunidad que lo utiliza.

El lenguaje de programación Java por ejemplo es orientado a objetos con herencia simple y soporta un estilo imperativo ( orientado a sentencias ) en cada método. Las bibliotecas tienen soporte gráfico, redes, computación distribuida y seguridad. Pero, como es el lenguaje mejor puesto en práctica?

Hay un punto más. Los programas, a diferencias de las sentencias habladas y a diferencia de la mayoría de los libros y revistas, cambian con el tiempo. Usualmente no basta con crear código que opere efectivamente y que sea fácil de entender por otras personas; uno también debe de organizar el código para que sea fácil de modificar. Puede haber diez maneras de escribir código para la tarea T. De esas diez maneras, siete serán extrañas, ineficientes o desconcertantes. De las tres restantes, cual será más similar al código necesario la tarea T en el release del siguiente año?

Existen muchos libros en los cuales aprender la gramática de el lenguaje de programación Java, incluyendo "El lenguaje de programación Java" escrito por Arnold, Gosling y Holmes. O "La especificación del lenguaje de programación Java" escrito por Gosling,Joy, Steele y Bracha. De la misma manera hay docenas de libros que tratan las bibliotecas y API's asociados el lenguaje de programación Java.

Este libro se resuelve tu tercera necesidad: usos y costumbres para un uso efectivo. Joshua Bloch pasó años extendiendo, implementado y usando el lenguaje de programación Java en Sun Microsystems; también ha leído mucho código de otras personas. Aquí, él ofrece un buen consejo, organizado sistemáticamente de como estructurar tu código para que funcione bien, de tal manera que otros puedan entenderlo, y en futuras modificaciones y mejoras sean menos causantes de dolores de cabeza -- quizá incluso puede ser que tus programas lleguen a ser placenteros, elegantes y con gracia.

Guy L. Sleele Jr.
April 2001

Imagen de neko069

A mí sólo me quedó la

A mí sólo me quedó la duda.... cuando se terminen los libros que ya no uses... que harás con el gato??

Imagen de ezamudio

CRC

Lo llevo a un Cat Recycling Center...

Imagen de bferro

Desviando un poco el hilo hacia "Effective Java"

A lo mejor y viene bien desviar el hilo de este "hilo" ( y valga la redundancia) y discutir un poco los items de Josh en su libro.
Se me ocurre empezar por éste:

........
Item 16: Favor composition over inheritance

Inheritance is a powerful way to achieve code reuse, but it is not always the best tool for the job. Used inappropriately, it leads to fragile software. It is safe to use inheritance within a package, where the subclass and the superclass implementations are under the control of the same programmers. It is also safe to use inheritance when extending classes specifically designed and documented for extension (Item 17). Inheriting from ordinary concrete classes across package boundaries, however, is dangerous. As a reminder, this book uses the word “inheritance” to mean implementation inheritance (when one class extends another). The problems discussed in this item do not apply to interface inheritance (when a class implements an interface or where one interface extends another).

......

Varios conceptos importantes en ese item que vale la pena comentar y quizá ampliarlos con ejemplos en otros lenguajes de programación.

¿Quien empieza?

Imagen de benek

Re: Desviando un poco el hilo hacia "Effective Java"

Creo que sería más conveniente si crea una nueva entrada en su blog con un título como "Effective Java, debatiendo conceptos" o algo parecido para ahí ir poniendo esos conceptos, ¿cómo ve Dr?

Incluso podríamos pegarlo en la principal para mayor visibilidad y se forme un debate más nutrido que en este tema (al que seguro algunos no han entrado por el título).

Puede comenzar con el tema que ya propuso de favorecer la composición por sobre la herencia.

Imagen de bferro

Buena idea

Pues lo hago como dices y lo pongo en la categoría de conceptos.

Imagen de Chkko

Recomiendo "Programacion Orientada a Objetos con Java"

Que tal soy nuevo en esto pero mi incursión a java esta soportada por un libro bastaste bueno que aparte de ser explicito te ayuda con aspectos basicos de la OOP(Programación Orientada a Objetos) por sus siglas en ingles, y que esta basado en BlueJ para ejercicios dentro de los capitulos, ademas de traer ejemplos practicos, bueno este libro se llama Programacion Orientada a Objetos con Java (una introducion practica usando BlueJ), los autores son David J. Barnes y Michael Kolling, yo me quede en la 3a edición, bueno ojala que les sirva.