Reto conseguido: un navegador web en 5 días

¿Recuerdas cuando te dije que iba a comenzar con retos de programación, y que el primero iba a ser un navegador web? Pues ya lo tengo listo... aunque no en cinco días consecutivos. Estuve hasta arriba de trabajo, pero conseguí hacer hueco para encontrar esos cinco días de reto, y aquí tienes el resultado.

Introducción

Descripción del proyecto

La idea de este reto consistía en realizar un navegador web sencillo, en Java, con una interfaz realizada en JavaFX. El funcionamiento del navegador es el siguiente:

Diagrama de flujo de BerenWeb

Además, existen dos botones para desplazarse hacia atrás y hacia delante en el historial, así como una barra de progreso en el borde inferior (desaparece una vez que la página está abierta).

Captura de pantalla de BerenWeb

Resultado del proyecto

El navegador funciona, pero con ciertas limitaciones. Al estar desprovisto de memoria, cada vez que lo abras tendrás que introducir tus datos personales si quieres acceder a un servicio. Además, la versión de las webs que se muestra es en ocasiones anticuada, lo cual, en principio, no tiene por qué ser un problema.

BerenWeb es un navegador libre. No dudes en descargar el código fuente y realizar las modificaciones y forks que desees al proyecto.

Octocat, la mascota de github

Hoy mismo comienzo a practicar mis conocimientos en #Java con BerenWeb, un sencillo proyecto de navegador #yoaprendojava

Compártelo

Características del proyecto

Herramientas utilizadas

Editor de diagramas de flujo

Logo de yWorks

yEd es una herramienta muy poderosa para realizar diagramas de flujo, que es el primer paso en cualquier proyecto de programación. Antes de empezar a escribir código, tienes que tener una idea muy clara de la estructura de la aplicación que vas a desarrollar.

IDE

Logo IntelliJ IDEA
Logo GluonHQ

A la hora de programar, he optado por mis dos herramientas favoritas: IntelliJ IDEA para redactar el código y Gluon SceneBuilder para construir la interfaz. 

Sistema de control de versiones

Logo de GitHub

El sistema de control de versiones que he utilizado ha sido git, sincronizado con mi repositorio en GitHub.

Librerías

Logo de JFoenix
Logo de Apache

Aparte de las librerías nativas de Java y JavaFX, he utilizado JFoeniX, una librería que sigue las directrices del material design, y Apache Commons Validator, para comprobar si el texto introducido en la barra de direcciones es una URL válida o no.

¿Qué he aprendido?

Lo más importante que he aprendido en este proyecto ha sido que es mejor crear un proyecto sencillo e ir complicándolo de manera paulatina, resolviendo un problema tras otro, sin querer hacer una aplicación perfecta a la primera. Una vez que el botón de Abrir funciona, pasar a implementar los botones del historial. Y así, una cosa cada vez.

En el aspecto técnico, aparte de las características concretas de este proyecto (como el utilizar un WebView para abrir páginas web), he ejercitado dos habilidades:

  • La construcción de interfaces, utilizando JavaFX.
  • El uso y análisis de herramientas que ofrece el sistema, así como de librerías que me ayudan a resolver problemas, sin tener que reinventar la rueda. Por ejemplo, la librería de Apache que he utilizado para validar las URLs.

¿Quieres participar en este proyecto?

Si estás aprendiendo a programar en Java, este proyecto puede ayudarte a desenvolverte con código ajeno y resolver problemas. De entrada, te doy dos propuestas que puedes resolver:

  • Como te he comentado más arriba, el navegador no posee ninguna base de datos, de manera que no puede memorizar datos introducidos. ¿Te animas a crear una base de datos?
  • Un problema que tiene el navegador es que, al introducir según qué palabras (como google o java), en lugar de abrirse la entrada correspondiente de Wikipedia el navegador intenta abrir https://www.google o https://www.java. ¿Eres capaz de resolverlo?
  • check
    Cuando la página web no existe, o cuando no hay conexión a internet, el navegador muestra una página en blanco. ¿Qué te parece hacer que muestre una imagen o un aviso?

¡Ánimo! Ya sabes que la mejor manera de aprender es practicar. ¡Juega cuanto quieras con este proyecto e introdúcele todas las modificaciones que desees!

Deja una respuesta 2 comentarios