1 00:00:00,000 --> 00:00:03,359 Todo arrancado 2 00:00:03,359 --> 00:00:06,500 El eclipse 3 00:00:06,500 --> 00:00:10,080 Vale, pues venga 4 00:00:10,080 --> 00:00:23,460 Vale, pues a ver 5 00:00:23,460 --> 00:00:26,059 Hacemos nuestro primer proyecto 6 00:00:26,059 --> 00:00:27,739 Pero ahora, como va a ser un proyecto 7 00:00:27,739 --> 00:00:29,879 Que tiene una interfaz gráfica 8 00:00:29,879 --> 00:00:31,300 Y vamos a necesitar, por tanto 9 00:00:31,300 --> 00:00:33,219 de dependencias, vamos a hacerlo 10 00:00:33,219 --> 00:00:34,880 con la estructura de Maven 11 00:00:34,880 --> 00:00:37,259 porque para que el proyecto lo pueda 12 00:00:37,259 --> 00:00:39,439 manejar, la herramienta de gestión 13 00:00:39,439 --> 00:00:41,380 de proyectos de Maven tiene que tener una estructura 14 00:00:41,380 --> 00:00:43,420 concreta, ¿vale? Nuestra estructura 15 00:00:43,420 --> 00:00:45,420 de toda la vida. Tiene que tener una estructura 16 00:00:45,420 --> 00:00:47,500 de carpetas concreta para que la herramienta 17 00:00:47,500 --> 00:00:49,439 Maven lo entienda y pueda 18 00:00:49,439 --> 00:00:51,439 hacer esas tareas automáticas, de arrancar, 19 00:00:51,579 --> 00:00:52,600 de compilar, lo que sea. 20 00:00:53,320 --> 00:00:55,299 Pues entonces no podemos empezarlo con un proyecto Java 21 00:00:55,299 --> 00:00:57,420 normal, sino lo tenemos que empezar como un 22 00:00:57,420 --> 00:00:58,119 proyecto Maven. 23 00:00:58,119 --> 00:01:00,859 vale, afortunadamente la herramienta 24 00:01:00,859 --> 00:01:02,759 Maven no es que sea de Eclipse ni de 25 00:01:02,759 --> 00:01:04,659 nada, lo que pasa es que Eclipse la 26 00:01:04,659 --> 00:01:06,439 integra, pero nosotros 27 00:01:06,439 --> 00:01:08,459 podríamos hacerlo todo por consola y hacer 28 00:01:08,459 --> 00:01:10,540 nuestro Maven Project todo por consola 29 00:01:10,540 --> 00:01:12,459 vale, pero Eclipse la 30 00:01:12,459 --> 00:01:14,480 integra, entonces nos facilita el 31 00:01:14,480 --> 00:01:16,340 trabajo, igual que nos facilita 32 00:01:16,340 --> 00:01:18,219 Eclipse, pues el editor de texto 33 00:01:18,219 --> 00:01:20,540 nos facilita de buguear y todas esas 34 00:01:20,540 --> 00:01:22,540 cosas, pues nos facilita el uso 35 00:01:22,540 --> 00:01:23,700 de la herramienta Maven 36 00:01:23,700 --> 00:01:26,379 pues venga, entonces en lugar de un new 37 00:01:26,379 --> 00:01:28,079 java project normal y corriente 38 00:01:28,079 --> 00:01:30,780 un maven project 39 00:01:30,780 --> 00:01:31,480 vale 40 00:01:31,480 --> 00:01:36,890 aquí de nuevo 41 00:01:36,890 --> 00:01:39,329 nuestro objetivo ahora no sé si en la parte 42 00:01:39,329 --> 00:01:40,569 de entornos de desarrollo 43 00:01:40,569 --> 00:01:43,549 está comprendido y ahí lo veréis en más detalle 44 00:01:43,549 --> 00:01:44,730 no lo sé 45 00:01:44,730 --> 00:01:47,409 pero mi objetivo ahora no es 46 00:01:47,409 --> 00:01:49,609 ni explicar maven 47 00:01:49,609 --> 00:01:51,769 ni evaluar 48 00:01:51,769 --> 00:01:53,269 de maven lógicamente pero si 49 00:01:53,269 --> 00:01:54,810 si lo vamos a usar 50 00:01:54,810 --> 00:01:56,829 lo imprescindible 51 00:01:56,829 --> 00:01:59,030 conceptualmente lo tenemos que conocer 52 00:01:59,030 --> 00:02:00,930 bueno, pues a ver 53 00:02:00,930 --> 00:02:03,290 en cuanto hacemos hacer un nuevo proyecto 54 00:02:03,290 --> 00:02:04,750 con la arquitectura de Mave 55 00:02:04,750 --> 00:02:06,209 nos aparece esta ventanita 56 00:02:06,209 --> 00:02:08,949 y esta ventanita ya 57 00:02:08,949 --> 00:02:11,270 nos cuenta, nos habla 58 00:02:11,270 --> 00:02:12,509 sobre 59 00:02:12,509 --> 00:02:15,330 uno de los conceptos 60 00:02:15,330 --> 00:02:16,449 de Mave 61 00:02:16,449 --> 00:02:25,560 que es el arquetipo 62 00:02:25,560 --> 00:02:27,319 ¿vale? que es el arquetipo 63 00:02:27,319 --> 00:02:29,560 el tipo de proyecto que vamos a hacer 64 00:02:29,560 --> 00:02:31,259 tipos de proyectos hay muchos 65 00:02:31,259 --> 00:02:33,340 un proyecto de tipo 66 00:02:33,340 --> 00:02:35,120 modelo vista 67 00:02:35,120 --> 00:02:37,120 controlador, un API REST 68 00:02:37,120 --> 00:02:39,060 una aplicación 69 00:02:39,060 --> 00:02:41,199 web con front 70 00:02:41,199 --> 00:02:43,159 de Angular, una librería 71 00:02:43,159 --> 00:02:45,180 de clases, hay millones 72 00:02:45,180 --> 00:02:47,039 de tipos de proyectos, una 73 00:02:47,039 --> 00:02:49,039 aplicación de escritorio normal y corriente 74 00:02:49,039 --> 00:02:51,219 pues el tipo 75 00:02:51,219 --> 00:02:52,740 de proyecto lo llama MAMEN 76 00:02:52,740 --> 00:02:54,159 Arquetipo 77 00:02:54,159 --> 00:02:56,719 entonces lo primero que nos pregunta 78 00:02:56,719 --> 00:02:58,099 ¿qué tipo de proyecto quieres? 79 00:02:59,319 --> 00:03:00,439 pues le vamos a decir 80 00:03:00,439 --> 00:03:02,560 oye, sáltate el tipo de 81 00:03:02,560 --> 00:03:05,099 no me hagas elegir el arquetipo 82 00:03:05,099 --> 00:03:07,439 sáltatelo porque quiero el normal y corriente 83 00:03:07,439 --> 00:03:08,879 y ya está 84 00:03:08,879 --> 00:03:12,219 el normal, yo ya lo personalizaré 85 00:03:12,219 --> 00:03:13,620 o sea, el básico 86 00:03:13,620 --> 00:03:14,759 que no tiene nada raro 87 00:03:14,759 --> 00:03:16,800 yo ya luego le personalizo y lo que sea 88 00:03:16,800 --> 00:03:19,340 entonces, marcamos aquí esto 89 00:03:19,340 --> 00:03:22,240 para que se salte el elegir el arquetipo 90 00:03:22,240 --> 00:03:23,259 porque si no se lo salta 91 00:03:23,259 --> 00:03:25,060 veréis que os saca ahí 92 00:03:25,060 --> 00:03:27,020 millones de arquetipos posibles 93 00:03:27,020 --> 00:03:28,199 que uno se vuelve loco 94 00:03:28,199 --> 00:03:29,879 entonces, marcamos ahí 95 00:03:29,879 --> 00:03:31,599 ¿Puedes repetir rápido qué es un arquetipo? 96 00:03:32,780 --> 00:03:34,639 Tipo de aplicación que vas a hacer. 97 00:03:35,080 --> 00:03:37,159 Aplicación web, aplicación de escritorio, 98 00:03:37,379 --> 00:03:38,819 librería de clases, 99 00:03:39,620 --> 00:03:41,280 API REST, servicio web, 100 00:03:41,419 --> 00:03:42,960 el tipo de aplicación que vas a hacer. 101 00:03:43,580 --> 00:03:44,840 Ese es el arquetipo. 102 00:03:45,219 --> 00:03:47,099 Entonces, te dice, ¿quieres seleccionar 103 00:03:47,099 --> 00:03:48,219 un arquetipo en concreto? 104 00:03:48,639 --> 00:03:51,340 Porque así yo ya me configuro algunas cosas 105 00:03:51,340 --> 00:03:52,780 de partida. 106 00:03:53,199 --> 00:03:54,360 Entonces decimos, no, 107 00:03:54,759 --> 00:03:56,680 sin ninguna configuración. 108 00:03:57,639 --> 00:03:59,319 El más general que haya. 109 00:03:59,319 --> 00:04:00,860 Y ya le configuramos nosotros 110 00:04:00,860 --> 00:04:02,680 Vale, pues 111 00:04:02,680 --> 00:04:05,539 Marcamos entonces esto 112 00:04:05,539 --> 00:04:10,159 Para que se salte el elegirlo 113 00:04:10,159 --> 00:04:11,599 Y 114 00:04:11,599 --> 00:04:13,659 Bueno, yo voy a poner esto 115 00:04:13,659 --> 00:04:15,400 Pero porque lo tengo separado por esto 116 00:04:15,400 --> 00:04:17,079 Pues venga 117 00:04:17,079 --> 00:04:18,540 Siguiente 118 00:04:18,540 --> 00:04:21,819 Hasta aquí hemos llegado todos 119 00:04:21,819 --> 00:04:32,660 He marcado esto y ya está 120 00:04:32,660 --> 00:04:36,879 Es que no me sale lo de 121 00:04:36,879 --> 00:04:37,519 Javascript 122 00:04:37,519 --> 00:04:39,480 Ah, no, pero 123 00:04:39,480 --> 00:04:41,279 no, a ver, es que esto 124 00:04:41,279 --> 00:04:43,480 porque yo lo tengo metido en un working set aparte 125 00:04:43,480 --> 00:04:44,000 esto olvídate 126 00:04:44,000 --> 00:04:50,620 vale, vale 127 00:04:50,620 --> 00:04:52,379 pues siguiente ventana 128 00:04:52,379 --> 00:04:54,740 esta ventana 129 00:04:54,740 --> 00:04:56,639 también mete nombres 130 00:04:56,639 --> 00:04:59,019 que son los habituales en la terminología 131 00:04:59,019 --> 00:04:59,439 de Maven 132 00:04:59,439 --> 00:05:03,399 como el grupo y el artefacto 133 00:05:03,399 --> 00:05:08,410 el artefacto 134 00:05:08,410 --> 00:05:09,470 es el proyecto 135 00:05:09,470 --> 00:05:12,290 artefacto es como si fuera la aplicación 136 00:05:12,290 --> 00:05:14,449 el proyecto, es como llama Maven 137 00:05:14,449 --> 00:05:16,009 a la aplicación, pues la llama 138 00:05:16,009 --> 00:05:17,850 artefacto 139 00:05:17,850 --> 00:05:21,540 pues nada, entonces aquí 140 00:05:21,540 --> 00:05:23,699 pondríamos el nombre de nuestra aplicación 141 00:05:23,699 --> 00:05:25,639 el nombre, pues lo que queráis poner 142 00:05:25,639 --> 00:05:27,199 aplicación prueba 143 00:05:27,199 --> 00:05:29,379 para ver si nos funciona todo 144 00:05:29,379 --> 00:05:31,160 las dependencias, las librerías 145 00:05:31,160 --> 00:05:33,459 yo que sé, el nombre que no le dé la gana 146 00:05:33,459 --> 00:05:35,339 ese es el artefacto, el proyecto 147 00:05:35,339 --> 00:05:39,379 y aquí uno pone lo que le dé la gana 148 00:05:39,379 --> 00:05:41,420 es como una descripción que aparecerá en el 149 00:05:41,420 --> 00:05:43,699 fichero de configuración 150 00:05:43,699 --> 00:05:45,620 de maven, pues aparecerá 151 00:05:45,620 --> 00:05:47,000 ese nombre, esa descripción 152 00:05:47,000 --> 00:05:49,519 pero bueno, el nombre del proyecto 153 00:05:49,519 --> 00:05:51,459 como tal, lo que entendemos como nombre de proyecto 154 00:05:51,459 --> 00:05:53,800 nosotros es lo que pongamos aquí en el artefacto 155 00:05:53,800 --> 00:05:58,139 y el grupo que es 156 00:05:58,139 --> 00:05:59,759 el grupo 157 00:05:59,759 --> 00:06:02,000 es la raíz 158 00:06:02,000 --> 00:06:04,100 la base de mi 159 00:06:04,100 --> 00:06:05,939 estructura de paquetes 160 00:06:05,939 --> 00:06:10,019 nuestras aplicaciones lógicamente 161 00:06:10,019 --> 00:06:12,139 son un montón de clases distribuidas en paquetes 162 00:06:12,139 --> 00:06:16,160 y esos paquetes ya más o menos hemos visto 163 00:06:16,160 --> 00:06:17,839 por ahí que suele haber 164 00:06:17,839 --> 00:06:20,199 uno que incluye 165 00:06:20,199 --> 00:06:21,959 las clases que describen el modelo 166 00:06:21,959 --> 00:06:22,800 las entidades 167 00:06:22,800 --> 00:06:25,939 pues puede haber otro que yo que sé 168 00:06:25,939 --> 00:06:26,660 que a lo mejor 169 00:06:26,660 --> 00:06:29,939 tenga las clases que son las excepciones 170 00:06:29,939 --> 00:06:31,699 porque yo he hecho excepciones propias 171 00:06:31,699 --> 00:06:34,000 puede haber otro pues que sean 172 00:06:34,000 --> 00:06:34,819 las clases 173 00:06:34,819 --> 00:06:37,920 que se ocupan de cómo recupero 174 00:06:37,920 --> 00:06:39,680 yo objetos y cómo los guardo 175 00:06:39,680 --> 00:06:41,339 en el soporte que sea 176 00:06:41,339 --> 00:06:42,980 sea un fichero, sea una base de datos 177 00:06:42,980 --> 00:06:45,600 normalmente yo distribuyo las clases 178 00:06:45,600 --> 00:06:46,620 en función de lo que hacen 179 00:06:46,620 --> 00:06:49,279 pues lo habitual 180 00:06:49,279 --> 00:06:50,579 lo habitual 181 00:06:50,579 --> 00:06:53,459 no es que estos sean paquetes 182 00:06:53,459 --> 00:06:55,220 que están así sueltos, este se llama modelo 183 00:06:55,220 --> 00:06:57,399 este exception, este dado, paquetes sueltos 184 00:06:57,399 --> 00:06:59,339 no es lo habitual, lo habitual es que 185 00:06:59,339 --> 00:07:01,759 estén metidos como en una especie de jerarquía 186 00:07:01,759 --> 00:07:03,300 y que todos tengan 187 00:07:03,300 --> 00:07:04,399 un prefijo delante 188 00:07:04,399 --> 00:07:07,379 por ejemplo, imaginaos que fuera esta 189 00:07:07,379 --> 00:07:09,360 la jerarquía, pues el 190 00:07:09,360 --> 00:07:11,319 paquete en realidad sería mi app punto 191 00:07:11,319 --> 00:07:13,579 model, mi app punto excepción 192 00:07:13,579 --> 00:07:15,100 mi app punto dado 193 00:07:15,100 --> 00:07:17,199 ya sabéis que el nombre de los paquetes es 194 00:07:17,199 --> 00:07:19,560 no sé qué, punto, no sé qué, punto, no sé qué 195 00:07:19,560 --> 00:07:21,800 y eso es equivalente a la ruta de carpetas 196 00:07:21,800 --> 00:07:22,360 donde están 197 00:07:22,360 --> 00:07:25,759 pues lo normal es que los paquetes 198 00:07:25,759 --> 00:07:27,040 que integra mi aplicación 199 00:07:27,040 --> 00:07:29,759 tengan un prefijo común 200 00:07:29,759 --> 00:07:32,019 eso significará que realmente 201 00:07:32,019 --> 00:07:33,519 si yo me meto en el sistema de archivos 202 00:07:33,519 --> 00:07:35,600 habrá una carpeta mi app 203 00:07:35,600 --> 00:07:37,920 y dentro de esa carpeta sea la carpeta model 204 00:07:37,920 --> 00:07:39,060 exception o dao 205 00:07:39,060 --> 00:07:41,920 que se traduce que el nombre del paquete 206 00:07:41,920 --> 00:07:44,160 es mi app.model, mi app.exception 207 00:07:44,160 --> 00:07:46,079 mi app.dao, entonces queda mucho más bonito 208 00:07:46,079 --> 00:07:47,819 y organizado y cuando uno 209 00:07:47,819 --> 00:07:49,300 despliega una aplicación 210 00:07:49,300 --> 00:07:51,180 pues si todos los paquetes 211 00:07:51,180 --> 00:07:52,920 tienen una raíz común 212 00:07:52,920 --> 00:07:53,899 pues queda mejor 213 00:07:53,899 --> 00:07:57,160 vale, pues esa raíz común 214 00:07:57,160 --> 00:07:59,620 esa raíz común sería el grupo 215 00:07:59,620 --> 00:08:02,899 la raíz común sería el grupo 216 00:08:02,899 --> 00:08:06,600 ¿y qué raíz común solemos poner? 217 00:08:07,600 --> 00:08:09,639 por supuesto la que a uno le dé la gana 218 00:08:09,639 --> 00:08:11,180 pero normalmente 219 00:08:11,180 --> 00:08:13,339 se pone el nombre de dominio 220 00:08:13,339 --> 00:08:15,139 el dominio 221 00:08:15,139 --> 00:08:17,519 correspondiente a la empresa 222 00:08:17,519 --> 00:08:18,740 que está desarrollando su software 223 00:08:18,740 --> 00:08:21,660 ¿vale? ¿qué es un software 224 00:08:21,660 --> 00:08:23,180 de oracle? pues el grupo 225 00:08:23,180 --> 00:08:24,439 será 226 00:08:24,439 --> 00:08:26,899 con punto oracle 227 00:08:26,899 --> 00:08:28,819 es el dominio al revés 228 00:08:28,819 --> 00:08:32,539 ¿qué es una 229 00:08:32,539 --> 00:08:34,220 aplicación de telefónica? 230 00:08:34,740 --> 00:08:36,759 pues si pudiéramos meternos en las aplicaciones 231 00:08:36,759 --> 00:08:38,679 de telefónica, veríamos 232 00:08:38,679 --> 00:08:40,700 que el grupo de sus aplicaciones 233 00:08:40,700 --> 00:08:42,820 es, pues yo que sé, es punto 234 00:08:42,820 --> 00:08:46,210 telefónica, es decir 235 00:08:46,210 --> 00:08:47,409 normalmente es el dominio 236 00:08:47,409 --> 00:08:50,490 y así todas las aplicaciones 237 00:08:50,490 --> 00:08:52,389 que están por ahí, que se despliegan, que no sé qué 238 00:08:52,389 --> 00:08:54,409 pues solamente ya por su 239 00:08:54,409 --> 00:08:56,850 empaquetado, queda clarísimo 240 00:08:56,850 --> 00:08:58,710 esas aplicaciones, de quién son 241 00:08:58,710 --> 00:09:00,549 cada 242 00:09:00,549 --> 00:09:01,690 paquete de que se ocupa 243 00:09:01,690 --> 00:09:04,549 entonces el nombre y la arquitectura de empaquetado 244 00:09:04,549 --> 00:09:06,450 en realidad no es trivial hasta el punto 245 00:09:06,450 --> 00:09:08,710 de que se asume cierto estándar 246 00:09:08,710 --> 00:09:10,570 es obligatorio que el grupo 247 00:09:10,570 --> 00:09:11,889 sea siempre el dominio 248 00:09:11,889 --> 00:09:14,149 pero bueno, es lo habitual 249 00:09:14,149 --> 00:09:14,889 ¿vale? 250 00:09:16,230 --> 00:09:18,889 bueno, pues nosotros podemos poner el grupo que nos dé la gana 251 00:09:18,889 --> 00:09:23,269 Venga, pues vamos a poner 252 00:09:23,269 --> 00:09:25,830 Por ejemplo es .damp1 253 00:09:25,830 --> 00:09:27,730 Ya está 254 00:09:27,730 --> 00:09:32,639 Sí, claro, los nombres de los paquetes 255 00:09:32,639 --> 00:09:33,500 No me haces una minúscula 256 00:09:33,500 --> 00:09:36,639 Porque es que esto 257 00:09:36,639 --> 00:09:38,620 Formará parte del nombre de mis paquetes 258 00:09:38,620 --> 00:09:42,110 El artefacto, pues yo que sé 259 00:09:42,110 --> 00:09:43,769 Vamos a hacer esta prueba 260 00:09:43,769 --> 00:09:47,549 Esta prueba de clase 261 00:09:47,549 --> 00:09:50,129 Aquí, para ver si conseguimos que arranque la aplicación 262 00:09:50,129 --> 00:09:51,850 Que entienda los módulos de las dependencias 263 00:09:51,850 --> 00:09:53,450 Todo eso, luego ya la siguiente tarea 264 00:09:53,450 --> 00:09:55,129 Ya será empezar a programar la aplicación 265 00:09:55,129 --> 00:09:58,009 Pero la primera parte es que yo consiga arrancarlo 266 00:09:58,009 --> 00:09:59,710 Y que haya encontrado los módulos 267 00:09:59,710 --> 00:10:00,350 Y todo eso 268 00:10:00,350 --> 00:10:03,610 Vale, nombre y descripción 269 00:10:03,610 --> 00:10:05,629 Yo siempre pongo por comodidad 270 00:10:05,629 --> 00:10:07,490 Lo mismo 271 00:10:07,490 --> 00:10:09,830 Y ya está, pero vamos, uno podría aquí 272 00:10:09,830 --> 00:10:13,649 Extenderse y le quedaría más bonito 273 00:10:13,649 --> 00:10:16,799 ¡Hala! 274 00:10:17,279 --> 00:10:18,279 Ya lo tenemos relleno 275 00:10:18,279 --> 00:10:20,720 Pues venga, finish 276 00:10:20,720 --> 00:10:23,120 Y se está abajo a la derecha la barra verde 277 00:10:23,120 --> 00:10:24,120 hasta que lo construye 278 00:10:24,120 --> 00:10:27,769 y ya lo ha construido 279 00:10:27,769 --> 00:10:30,629 y como veis 280 00:10:30,629 --> 00:10:32,769 la estructura de carpetas 281 00:10:32,769 --> 00:10:34,909 que ha generado no es la de un proyecto 282 00:10:34,909 --> 00:10:36,149 de Java normal y corriente 283 00:10:36,149 --> 00:10:40,559 tiene esta carpeta 284 00:10:40,559 --> 00:10:42,759 que es la que se supone 285 00:10:42,759 --> 00:10:44,620 que está pensada y me ofrece Maven 286 00:10:44,620 --> 00:10:45,600 para mis paquetes 287 00:10:45,600 --> 00:10:48,019 mis paquetes y mi código fuente irá aquí 288 00:10:48,019 --> 00:10:50,580 luego tiene 289 00:10:50,580 --> 00:10:51,580 esta pensada 290 00:10:51,580 --> 00:10:53,659 para las clases de prueba 291 00:10:53,659 --> 00:10:56,480 entonces si hiciéramos bien las cosas 292 00:10:56,480 --> 00:10:58,799 lógicamente, pues uno va haciendo 293 00:10:58,799 --> 00:11:01,100 las clases de prueba para ir a las clases normales 294 00:11:01,100 --> 00:11:01,960 ¿no? 295 00:11:02,940 --> 00:11:04,740 entonces, pues uno iría metiendo aquí 296 00:11:04,740 --> 00:11:06,779 las clases de prueba, pues no sé, todo lo que 297 00:11:06,779 --> 00:11:08,779 hayáis hecho o visto de pruebas en entornos de 298 00:11:08,779 --> 00:11:10,600 desarrollo, entonces 299 00:11:10,600 --> 00:11:12,700 Maven, si tú le das el goal 300 00:11:12,700 --> 00:11:14,500 ahora vemos lo que es el goal, le dices, oye Maven 301 00:11:14,500 --> 00:11:16,200 pasa test 302 00:11:16,200 --> 00:11:18,659 pues Maven ya se coge las clases 303 00:11:18,659 --> 00:11:20,759 de prueba de aquí, empieza 304 00:11:20,759 --> 00:11:22,539 a hacer todo lo que tenga que hacer, automatiza 305 00:11:22,539 --> 00:11:28,379 todo eso, esta carpeta 306 00:11:28,379 --> 00:11:30,179 la de resources para que está pensada 307 00:11:30,179 --> 00:11:32,480 pues está pensada por si mi aplicación usa recursos 308 00:11:32,480 --> 00:11:34,259 tipo ficheros de configuración 309 00:11:34,259 --> 00:11:36,559 pues yo que sé, cosas que usa mi aplicación 310 00:11:36,559 --> 00:11:38,600 el fichero de configuración de base de datos 311 00:11:38,600 --> 00:11:39,820 si es que usa una base de datos 312 00:11:39,820 --> 00:11:42,360 recursos varios que no son código 313 00:11:42,360 --> 00:11:44,559 normalmente son 314 00:11:44,559 --> 00:11:46,580 pues esos ficheros, ficheros que mi aplicación 315 00:11:46,580 --> 00:11:48,279 va a utilizar pues como configuración 316 00:11:48,279 --> 00:11:48,980 o como cosas 317 00:11:48,980 --> 00:11:52,279 y como la parte de pruebas tiene que 318 00:11:52,279 --> 00:11:54,220 ser completamente paralela 319 00:11:54,220 --> 00:11:56,279 a la original para que las pruebas 320 00:11:56,279 --> 00:11:58,200 se pasen, pues esta está pensada 321 00:11:58,200 --> 00:12:00,620 para meter los recursos pero de pruebas 322 00:12:00,620 --> 00:12:01,820 los recursos de pruebas 323 00:12:01,820 --> 00:12:02,960 es decir esto es 324 00:12:02,960 --> 00:12:06,059 una copia de esto para que yo vaya haciendo 325 00:12:06,059 --> 00:12:07,759 en paralelo las clases de prueba y todo 326 00:12:07,759 --> 00:12:09,419 para que pueda ir pasando las pruebas 327 00:12:09,419 --> 00:12:10,960 pero bueno esa parte nosotros 328 00:12:10,960 --> 00:12:13,919 no la vamos a hacer con lo cual esas dos carpetas 329 00:12:13,919 --> 00:12:14,960 no la vamos a usar 330 00:12:14,960 --> 00:12:19,919 vale y luego está 331 00:12:19,919 --> 00:12:22,179 este fichero que es el fundamental que ahora lo abrimos 332 00:12:22,179 --> 00:12:22,659 y lo vemos 333 00:12:22,659 --> 00:12:25,759 pero fijaos en el detalle 334 00:12:25,759 --> 00:12:29,799 cuando Eclipse arranca el proyecto 335 00:12:29,799 --> 00:12:32,120 MAVEN, automáticamente 336 00:12:32,120 --> 00:12:33,639 se configura 337 00:12:33,639 --> 00:12:36,100 para usar la JR1.8 338 00:12:36,100 --> 00:12:39,470 entonces en la mayoría 339 00:12:39,470 --> 00:12:41,210 de las aplicaciones podemos tirar con la 340 00:12:41,210 --> 00:12:42,110 JR1.8 341 00:12:42,110 --> 00:12:45,250 y ya está, pero en esta no nos interesa 342 00:12:45,250 --> 00:12:47,269 porque esta se va a pegar 343 00:12:47,269 --> 00:12:48,970 con JavaFX 344 00:12:48,970 --> 00:12:50,370 que usa el sistema de módulos 345 00:12:50,370 --> 00:12:52,710 que es más moderno que JR1.8 346 00:12:52,710 --> 00:12:54,870 entonces puede haber conflictos, entonces lo normal es que 347 00:12:54,870 --> 00:12:56,669 en cuanto uno hace el proyecto de MAVEN con Eclipse 348 00:12:56,669 --> 00:12:58,870 cambie esto 349 00:12:58,870 --> 00:13:01,210 cambie y lo ponga al nivel suyo propio 350 00:13:01,210 --> 00:13:03,230 yo tengo el JDK 25 351 00:13:03,230 --> 00:13:06,470 porque lo he puesto esta semana santa 352 00:13:06,470 --> 00:13:07,350 para tener el último 353 00:13:07,350 --> 00:13:08,870 vosotros pues el que tengáis 354 00:13:08,870 --> 00:13:10,549 el que tengáis el 24 o el que sea 355 00:13:10,549 --> 00:13:13,110 entonces lo primero que tendríamos que hacer 356 00:13:13,110 --> 00:13:14,409 y que no se nos tendría que olvidar 357 00:13:14,409 --> 00:13:15,529 una vez hecho el proyecto MAVEN 358 00:13:15,529 --> 00:13:17,950 es cambiar la máquina virtual 359 00:13:17,950 --> 00:13:20,490 a la más reciente nuestra que tengamos 360 00:13:20,490 --> 00:13:22,610 a ver 361 00:13:22,610 --> 00:13:24,490 ¿necesitáis que lo cambie a negro? 362 00:13:24,490 --> 00:13:28,169 Uy, qué claridad de ideas 363 00:13:28,169 --> 00:13:32,250 A ver 364 00:13:32,250 --> 00:13:35,710 ¿Alguien más le ha salido algo 365 00:13:35,710 --> 00:13:37,549 con el plugin de Maven 366 00:13:37,549 --> 00:13:38,289 para Eclipse? 367 00:13:41,049 --> 00:13:42,049 Vale, entonces 368 00:13:42,049 --> 00:13:47,820 Ahora 369 00:13:47,820 --> 00:13:49,299 Este fichero de aquí 370 00:13:49,299 --> 00:13:51,720 El POM 371 00:13:51,720 --> 00:13:53,919 Este es el básico 372 00:13:53,919 --> 00:13:56,799 Este es el que manda 373 00:13:56,799 --> 00:13:57,539 en Maven 374 00:13:57,539 --> 00:13:59,240 porque este es el que tiene 375 00:13:59,240 --> 00:14:01,220 toda la configuración 376 00:14:01,220 --> 00:14:03,919 ¿vale? entonces ahora mismo 377 00:14:03,919 --> 00:14:06,179 si lo abrimos 378 00:14:06,179 --> 00:14:13,289 si lo abrimos 379 00:14:13,289 --> 00:14:14,070 no tiene nada 380 00:14:14,070 --> 00:14:18,830 el fichero de configuración de Mabel 381 00:14:18,830 --> 00:14:21,529 que ahora mismo está vacío porque todavía no tiene nada 382 00:14:21,529 --> 00:14:23,570 tiene solamente lo que lo hemos puesto 383 00:14:23,570 --> 00:14:24,830 el grupo 384 00:14:24,830 --> 00:14:27,409 como se llama nuestro proyecto 385 00:14:27,409 --> 00:14:29,429 y el nombre y la descripción 386 00:14:29,429 --> 00:14:30,250 no tiene nada más 387 00:14:30,250 --> 00:14:31,149 ¿vale? 388 00:14:33,009 --> 00:14:37,009 ¿Tiene o sale a todos este error rojo? 389 00:14:37,450 --> 00:14:37,950 Sí, sí. 390 00:14:38,529 --> 00:14:38,809 Vale. 391 00:14:39,929 --> 00:14:41,669 Pues tiene esa cosita roja 392 00:14:41,669 --> 00:14:44,289 que da cierta ansiedad porque es rojo. 393 00:14:45,330 --> 00:14:48,230 Pero entonces parece que es un error de compilación 394 00:14:48,230 --> 00:14:49,669 y que todo va a morirse. 395 00:14:50,289 --> 00:14:51,929 Pero es que esto no es un código fuente. 396 00:14:52,929 --> 00:14:53,789 Con lo cual, 397 00:14:54,529 --> 00:14:57,070 podríamos ignorarlo si nos diera la gana. 398 00:14:57,570 --> 00:14:59,490 Esto es un error porque te dice 399 00:14:59,490 --> 00:15:01,070 que el esquema que para ti y para Natán 400 00:15:01,070 --> 00:15:03,370 Podríamos ignorarlo, no pasa absolutamente nada 401 00:15:03,370 --> 00:15:04,649 Porque esto no es código fuente 402 00:15:04,649 --> 00:15:07,070 Pero, como nos da ansiedad 403 00:15:07,070 --> 00:15:08,710 Ese rojo ahí, verlo 404 00:15:08,710 --> 00:15:10,490 Pues 405 00:15:10,490 --> 00:15:12,850 Os digo el truco mágico 406 00:15:12,850 --> 00:15:15,590 Que le pongáis aquí una S 407 00:15:15,590 --> 00:15:18,570 Una S 408 00:15:18,570 --> 00:15:19,990 Ahí 409 00:15:19,990 --> 00:15:23,509 Ese truco no le sabía ni ChaGPT 410 00:15:23,509 --> 00:15:24,710 Ni Gemini, ni nadie 411 00:15:24,710 --> 00:15:30,539 Y ya está, se quita el error 412 00:15:30,539 --> 00:15:32,740 Que da lo mismo, que esté, que no esté 413 00:15:32,740 --> 00:15:34,399 no va a tener ninguna implicación 414 00:15:34,399 --> 00:15:36,139 ahora de trabajar con el proyecto, de nada 415 00:15:36,139 --> 00:15:37,960 pero nos queda más bonito 416 00:15:37,960 --> 00:15:40,820 si lo quitamos 417 00:15:40,820 --> 00:15:44,480 claro, a cambio hacemos aparecer una cosa 418 00:15:44,480 --> 00:15:46,399 del sonar, pero esa no la vemos tanto 419 00:15:46,399 --> 00:15:47,879 así que no nos importa 420 00:15:47,879 --> 00:15:48,639 dime 421 00:15:48,639 --> 00:15:53,419 vamos a automatizar 422 00:15:53,419 --> 00:15:56,159 las dos cosas que necesitamos con JavaFX 423 00:15:56,159 --> 00:15:57,080 con JavaFX 424 00:15:57,080 --> 00:16:03,399 la gestión de las dependencias 425 00:16:03,399 --> 00:16:05,539 y el arranque del proyecto 426 00:16:05,539 --> 00:16:07,759 que no es trivial porque no es 427 00:16:07,759 --> 00:16:09,399 arrancarlo como una aplicación normal 428 00:16:09,399 --> 00:16:11,360 porque tiene módulos 429 00:16:11,360 --> 00:16:15,000 claro, los parámetros que te dicen 430 00:16:15,000 --> 00:16:16,580 dónde están los módulos que vas a usar 431 00:16:16,580 --> 00:16:20,799 efectivamente 432 00:16:20,799 --> 00:16:21,940 le pasas parámetros 433 00:16:21,940 --> 00:16:25,299 vale, pues entonces 434 00:16:25,299 --> 00:16:26,419 aquí 435 00:16:26,419 --> 00:16:29,320 es donde tenemos que empezar a configurar 436 00:16:29,320 --> 00:16:29,919 cosas 437 00:16:29,919 --> 00:16:32,940 vale, entonces 438 00:16:32,940 --> 00:16:34,700 esto 439 00:16:34,700 --> 00:16:35,740 vamos a ver 440 00:16:35,740 --> 00:16:38,379 aquí habría que empezar a configurar 441 00:16:38,379 --> 00:16:40,919 primero las librerías de las que 442 00:16:40,919 --> 00:16:41,720 tiro 443 00:16:41,720 --> 00:16:46,759 esto que se pone 444 00:16:46,759 --> 00:16:53,590 aquí, serían las 445 00:16:53,590 --> 00:16:55,090 librerías que necesita 446 00:16:55,090 --> 00:16:56,970 mi proyecto 447 00:16:56,970 --> 00:17:08,940 mi proyecto, eso lo tengo 448 00:17:08,940 --> 00:17:10,619 que meter aquí en este nodo 449 00:17:10,619 --> 00:17:12,880 de pendencias que he escrito 450 00:17:12,880 --> 00:17:13,200 yo. 451 00:17:14,420 --> 00:17:14,819 ¿Vale? 452 00:17:16,779 --> 00:17:18,819 En este nodo de pendencias que he escrito 453 00:17:18,819 --> 00:17:20,579 yo aquí es donde tenemos que ir poniendo 454 00:17:20,579 --> 00:17:22,279 una POM a las librerías que necesitamos. 455 00:17:23,960 --> 00:17:24,740 Nosotros vamos a tiro 456 00:17:24,740 --> 00:17:26,799 fijo a por las de JavaFX. Entonces yo lo que 457 00:17:26,799 --> 00:17:28,680 voy a hacer ahora es 458 00:17:28,680 --> 00:17:30,480 pasaros un POM al aula virtual 459 00:17:30,480 --> 00:17:32,660 para que lo copiéis de ahí. 460 00:17:33,220 --> 00:17:34,420 Y así no perdamos más tiempo. 461 00:17:35,259 --> 00:17:36,859 Pero antes de hacer eso, de subiros 462 00:17:36,859 --> 00:17:38,779 el POM al aula virtual para que lo 463 00:17:38,779 --> 00:17:40,160 descarguéis y lo copiéis de ahí, 464 00:17:40,619 --> 00:18:02,519 Vamos a ver un poco en general la magia de Maven, que es la magia que tiene, que es, imaginaos que queremos hacer una aplicación que usa, pues yo que sé qué, venga, vamos a poner, pues bueno, usa JavaFX, que son librerías externas. 465 00:18:02,519 --> 00:18:05,079 entonces, jolines 466 00:18:05,079 --> 00:18:06,980 pues yo necesito las librerías de java 467 00:18:06,980 --> 00:18:08,579 fx, ¿qué pongo ahí dentro? 468 00:18:08,859 --> 00:18:09,640 ¿qué pongo ahí dentro? 469 00:18:10,759 --> 00:18:12,859 vale, pues entonces uno se va a internet 470 00:18:12,859 --> 00:18:17,799 y abre el 471 00:18:17,799 --> 00:18:18,859 repositorio de maven 472 00:18:18,859 --> 00:18:27,460 busca maven repository 473 00:18:27,460 --> 00:18:29,819 es lo primero que le sale, el repositorio de maven 474 00:18:29,819 --> 00:18:32,670 y ahora 475 00:18:32,670 --> 00:18:35,089 en el repositorio de maven 476 00:18:35,089 --> 00:18:37,430 están los miles de millones de millones de miles 477 00:18:37,430 --> 00:18:38,230 de hard 478 00:18:38,230 --> 00:18:41,490 que tú puedes utilizar en tu aplicación 479 00:18:41,490 --> 00:18:42,730 pues oye 480 00:18:42,730 --> 00:18:45,349 Venga, quiero yo 481 00:18:45,349 --> 00:18:47,670 Pues hacer una aplicación 482 00:18:47,670 --> 00:18:49,769 Que use JavaFX 483 00:18:49,769 --> 00:18:52,710 Venga, no sé qué 484 00:18:52,710 --> 00:18:54,650 Pongo ahí parámetros de búsqueda 485 00:18:54,650 --> 00:18:55,450 Búscame 486 00:18:55,450 --> 00:19:00,359 Y ya me empieza a sacar aquí cosas 487 00:19:00,359 --> 00:19:07,559 Entonces 488 00:19:07,559 --> 00:19:10,990 Esto no es trivial 489 00:19:10,990 --> 00:19:13,410 Porque luego tú a partir de aquí 490 00:19:13,410 --> 00:19:15,269 Tienes que encontrar la que realmente quieres 491 00:19:15,269 --> 00:19:17,230 Si vas a ciegas 492 00:19:17,230 --> 00:19:19,170 Normalmente pruebas 493 00:19:19,170 --> 00:19:21,569 Ahora vemos como pruebas 494 00:19:21,569 --> 00:19:23,750 y lo pones, uy pues no me funciona 495 00:19:23,750 --> 00:19:25,250 pues va a ser otra, o sea no es trivial 496 00:19:25,250 --> 00:19:26,890 entonces 497 00:19:26,890 --> 00:19:29,430 antes, ¿qué ocurre? 498 00:19:29,549 --> 00:19:31,710 pues que normalmente la arquitectura de tu proyecto ya está 499 00:19:31,710 --> 00:19:33,650 hecha, has hecho un proyecto en equipo, la arquitectura ya está hecha 500 00:19:33,650 --> 00:19:35,809 las dependencias ya están, no te vuelves loco desde cero 501 00:19:35,809 --> 00:19:37,430 aquí, ahora 502 00:19:37,430 --> 00:19:39,829 ¿qué es lo que hacéis y haréis? 503 00:19:40,950 --> 00:19:41,789 pues este pobre 504 00:19:41,789 --> 00:19:42,690 repositorio de maven 505 00:19:42,690 --> 00:19:45,650 que sigue siendo fundamental, pues se ha quedado 506 00:19:45,650 --> 00:19:47,609 un poco así, porque le sueles decir 507 00:19:47,609 --> 00:19:49,029 a la IA que sea 508 00:19:49,029 --> 00:19:51,049 pásame el nodo de 509 00:19:51,049 --> 00:19:53,130 dependencias directamente para que yo 510 00:19:53,130 --> 00:19:55,109 copie y pegue de una aplicación 511 00:19:55,109 --> 00:19:57,089 que usa esto, esto y esto, entonces el te lo pasa 512 00:19:57,089 --> 00:19:59,190 y después de 15 513 00:19:59,190 --> 00:20:01,269 intentos, la 15 514 00:20:01,269 --> 00:20:02,769 ya si te va a pasar el bueno 515 00:20:02,769 --> 00:20:03,589 vale 516 00:20:03,589 --> 00:20:06,990 entonces, si no lo 517 00:20:06,990 --> 00:20:09,130 hiciéramos así, ah pues mira, esta es la librería 518 00:20:09,130 --> 00:20:11,150 que yo quiero, quiero esta 519 00:20:11,150 --> 00:20:12,890 es que ninguna de estas que me está ofreciendo 520 00:20:12,890 --> 00:20:14,029 en particular es la que 521 00:20:14,029 --> 00:20:19,680 querríamos, imaginamos 522 00:20:19,680 --> 00:20:21,259 Pues de JavaFX 523 00:20:21,259 --> 00:20:27,019 Pero yo quiero de OpenJFX 524 00:20:27,019 --> 00:20:36,500 A ver, sí, pero 525 00:20:36,500 --> 00:20:43,299 No, tranquila 526 00:20:43,299 --> 00:20:45,359 Que no hace falta, que os lo voy a pasar yo ya 527 00:20:45,359 --> 00:20:46,180 No hace falta 528 00:20:46,180 --> 00:20:48,259 Relax 529 00:20:48,259 --> 00:20:51,059 Vale, a ver, nos da igual cualquiera 530 00:20:51,059 --> 00:20:52,799 Ah, bueno, por ejemplo, no, más interesante 531 00:20:52,799 --> 00:20:55,099 Más que JavaFX, porque eso como lo vamos a hacer 532 00:20:55,099 --> 00:20:55,680 De otra manera 533 00:20:55,680 --> 00:20:58,059 Imaginaos que queremos hacer una aplicación 534 00:20:58,059 --> 00:21:00,740 que queremos que genere archivos 535 00:21:00,740 --> 00:21:01,359 de logs 536 00:21:01,359 --> 00:21:03,720 ¿sabéis lo que es un archivo de logs? 537 00:21:05,480 --> 00:21:06,519 es un archivo 538 00:21:06,519 --> 00:21:08,400 que según una aplicación va funcionando 539 00:21:08,400 --> 00:21:10,539 se va escribiendo solito 540 00:21:10,539 --> 00:21:12,599 y va tomando 541 00:21:12,599 --> 00:21:13,859 notas de lo que está pasando 542 00:21:13,859 --> 00:21:16,420 ¿por qué? porque si la aplicación falla 543 00:21:16,420 --> 00:21:18,279 y te llama un cliente, oye son las 544 00:21:18,279 --> 00:21:20,940 me ha fallado la aplicación, uy a qué hora te falló 545 00:21:20,940 --> 00:21:22,240 pues a las 13 y cuarto 546 00:21:22,240 --> 00:21:23,559 estaba sentado y me falló 547 00:21:23,559 --> 00:21:26,680 tú abres el archivo de logs que tiene notas 548 00:21:26,680 --> 00:21:29,140 13 y 10, pasó esto 549 00:21:29,140 --> 00:21:30,920 13 y 15, pasó que alguien 550 00:21:30,920 --> 00:21:33,200 Intentó acceder a una variable protegida 551 00:21:33,200 --> 00:21:34,200 O no sé qué, ¡boom! 552 00:21:34,740 --> 00:21:36,839 Le dices, oye, es que mira, pasó esto, lo siento 553 00:21:36,839 --> 00:21:38,660 Ahora ya te lo arreglo, no sé cuánto 554 00:21:38,660 --> 00:21:40,000 Eso es un archivo de log, ¿vale? 555 00:21:40,019 --> 00:21:41,400 El archivo de log, ¿quién lo genera? 556 00:21:42,380 --> 00:21:43,880 Nuestra propia aplicación 557 00:21:43,880 --> 00:21:46,980 Que en lugar de hacer el system.out.println 558 00:21:46,980 --> 00:21:48,539 Pues hace una cosa muy parecida 559 00:21:48,539 --> 00:21:50,259 Pero que en lugar de escribirlo en consola 560 00:21:50,259 --> 00:21:52,059 Lo va escribiendo a un fichero 561 00:21:52,059 --> 00:21:53,380 Entonces el fichero se va generando 562 00:21:53,380 --> 00:21:56,099 Vale, pues imaginaos que queremos 563 00:21:56,099 --> 00:21:57,200 Hacer una aplicación 564 00:21:57,200 --> 00:21:59,920 Y cambiar los system.out.println 565 00:21:59,920 --> 00:22:01,519 Que informen de lo que va pasando 566 00:22:01,519 --> 00:22:03,220 Cambiarlo por mandarlo a un fichero de log 567 00:22:03,220 --> 00:22:06,240 Pues tendríamos que usar una librería de logs 568 00:22:06,240 --> 00:22:07,619 Que tiene las clases que lo hacen 569 00:22:07,619 --> 00:22:09,019 Pues venga 570 00:22:09,019 --> 00:22:12,559 Entonces, oye, voy a buscar una librería de log 571 00:22:12,559 --> 00:22:14,079 Que me haga estas cosas 572 00:22:14,079 --> 00:22:15,660 Anda, mira 573 00:22:15,660 --> 00:22:17,799 Pues, uy, esta, que bonita 574 00:22:17,799 --> 00:22:18,819 Me gusta esta 575 00:22:18,819 --> 00:22:21,359 Vale, que quiero esta librería 576 00:22:21,359 --> 00:22:21,759 Entonces 577 00:22:21,759 --> 00:22:24,140 ¿Qué hacemos? 578 00:22:24,640 --> 00:22:26,019 Pinchamos, venga 579 00:22:26,019 --> 00:22:28,359 ¿Qué versión quieres? Saca todas las versiones 580 00:22:28,359 --> 00:22:30,160 ¿Qué versión quieres? Venga 581 00:22:30,160 --> 00:22:32,259 Esta quiero, la 6.5 582 00:22:32,259 --> 00:22:32,680 ¡Pum! 583 00:22:33,599 --> 00:22:35,359 La pinchas y 584 00:22:35,359 --> 00:22:36,859 Y te dice 585 00:22:36,859 --> 00:22:41,519 Ah, está abajo, no lo veía 586 00:22:41,519 --> 00:22:43,559 Vale, y te da esto 587 00:22:43,559 --> 00:22:45,859 Vale, pues esto 588 00:22:45,859 --> 00:22:47,819 Tú tal cual pinchas 589 00:22:47,819 --> 00:22:48,859 Se copia 590 00:22:48,859 --> 00:22:51,500 Tal cual pinchas 591 00:22:51,500 --> 00:22:53,460 se copia y esto lo metes tú 592 00:22:53,460 --> 00:22:55,559 en el POM. Vale, lo que 593 00:22:55,559 --> 00:22:57,420 se ha copiado, tal cual, nos vamos aquí 594 00:22:57,420 --> 00:22:58,519 adentro de dependencias, 595 00:22:59,480 --> 00:23:00,440 hacemos control V 596 00:23:00,440 --> 00:23:02,279 y le damos a guardar 597 00:23:02,279 --> 00:23:05,420 y de repente, pues aquí empiezan 598 00:23:05,420 --> 00:23:06,299 a pasar cosas. 599 00:23:08,839 --> 00:23:09,819 ¿Veis? Aquí han empezado 600 00:23:09,819 --> 00:23:11,299 a pasar cosas, la barrita se ha puesto 601 00:23:11,299 --> 00:23:13,640 como loca. Pues, ¿qué ha pasado? 602 00:23:14,279 --> 00:23:15,480 Pues ha pasado una magia 603 00:23:15,480 --> 00:23:17,400 que ahora de repente 604 00:23:17,400 --> 00:23:19,460 mi proyecto le ha 605 00:23:19,460 --> 00:23:21,420 aparecido dependencias de 606 00:23:21,420 --> 00:23:23,660 maven y le ha 607 00:23:23,660 --> 00:23:25,500 aparecido todo este mogollón 608 00:23:25,500 --> 00:23:25,839 de hard 609 00:23:25,839 --> 00:23:28,200 entonces 610 00:23:28,200 --> 00:23:31,299 al haber copiado yo en mi pom 611 00:23:31,299 --> 00:23:33,640 xml, al haber copiado 612 00:23:33,640 --> 00:23:35,640 ese dependency que me ofrecía maven 613 00:23:35,640 --> 00:23:37,559 en cuanto lo he 614 00:23:37,559 --> 00:23:39,099 copiado y he guardado, maven dice 615 00:23:39,099 --> 00:23:41,460 ah vale, que quieres los hard 616 00:23:41,460 --> 00:23:43,440 de la herramienta log tools 617 00:23:43,440 --> 00:23:44,519 quieres estos hard 618 00:23:44,519 --> 00:23:47,279 no pasa nada, yo me conecto al 619 00:23:47,279 --> 00:23:49,220 repositorio, te los descargo 620 00:23:49,220 --> 00:23:51,339 te los incorporo a 621 00:23:51,339 --> 00:23:53,220 donde haga falta, el classpath 622 00:23:53,220 --> 00:23:54,299 y ya los tienes todos ahí 623 00:23:54,299 --> 00:23:57,420 vale, entonces no hemos tenido que 624 00:23:57,420 --> 00:23:59,180 buscar por internet a mano estos 625 00:23:59,180 --> 00:24:01,440 hard para descargarlos 626 00:24:01,440 --> 00:24:03,359 y añadirlos nosotros al proyecto 627 00:24:03,359 --> 00:24:05,319 no, nos hemos ido al repositorio de 628 00:24:05,319 --> 00:24:06,960 maven, hemos buscado 629 00:24:06,960 --> 00:24:09,299 quiero esta herramienta, hemos 630 00:24:09,299 --> 00:24:11,279 copiado la dependencia 631 00:24:11,279 --> 00:24:13,440 que me ofrecía, en cuanto 632 00:24:13,440 --> 00:24:14,799 hemos guardado, pum 633 00:24:14,799 --> 00:24:17,079 el repositorio de maven 634 00:24:17,079 --> 00:24:19,299 ha descargado todos los puntos 635 00:24:19,299 --> 00:24:21,500 hojas relacionados con esta herramienta, 636 00:24:21,720 --> 00:24:23,180 todos, y los ha 637 00:24:23,180 --> 00:24:26,880 incorporado a mi proyecto. Y además, 638 00:24:27,059 --> 00:24:28,839 y además, 639 00:24:29,140 --> 00:24:30,339 me los ha 640 00:24:30,339 --> 00:24:32,720 guardado localmente 641 00:24:32,720 --> 00:24:34,539 en un sitio. ¿Veis aquí la ruta donde lo ha 642 00:24:34,539 --> 00:24:36,460 guardado? Lo guarda en una 643 00:24:36,460 --> 00:24:38,660 carpetita oculta .m2 644 00:24:38,660 --> 00:24:40,079 repository, ¿vale? 645 00:24:40,299 --> 00:24:41,420 En vuestro usuario. 646 00:24:42,539 --> 00:24:44,359 Entonces, en esta carpetita oculta, 647 00:24:44,539 --> 00:24:45,880 ahí lo deja ya descargado. 648 00:24:49,759 --> 00:24:51,319 Que esa carpeta desaparece, 649 00:24:51,319 --> 00:24:53,859 porque uno va, se mete en ella, la ve a borrar 650 00:24:53,859 --> 00:24:55,539 no pasa nada porque 651 00:24:55,539 --> 00:24:58,039 desaparezca, cuando la aplicación 652 00:24:58,039 --> 00:24:59,079 arranque otra vez 653 00:24:59,079 --> 00:25:01,839 maven dirá, uuuh, me los han quitado 654 00:25:01,839 --> 00:25:03,640 pues no pasa nada, él solo se vuelve 655 00:25:03,640 --> 00:25:05,339 a conectar al repositorio y te los vuelve a descargar 656 00:25:05,339 --> 00:25:07,799 en cuanto ve que en el pom está eso 657 00:25:07,799 --> 00:25:08,920 vale 658 00:25:08,920 --> 00:25:11,420 entonces nos facilita 659 00:25:11,420 --> 00:25:13,140 horrores el 660 00:25:13,140 --> 00:25:15,640 encontrar y incorporar 661 00:25:15,640 --> 00:25:17,079 las librerías que usa mi aplicación 662 00:25:17,079 --> 00:25:19,440 vale, pero como lógicamente 663 00:25:19,440 --> 00:25:21,740 esta no la vamos a usar, pues vamos a quitar 664 00:25:21,740 --> 00:25:22,960 esto que hemos copiado 665 00:25:22,960 --> 00:25:25,519 volvemos a guardar 666 00:25:25,519 --> 00:25:27,440 y ha desaparecido el maven 667 00:25:27,440 --> 00:25:28,240 de pendencia 668 00:25:28,240 --> 00:25:32,099 lo hemos quitado, lo hemos borrado, boom, pues ha desaparecido 669 00:25:32,099 --> 00:25:36,140 en el repositorio local 670 00:25:36,140 --> 00:25:38,059 se ha quedado, si no queremos que nos moleste 671 00:25:38,059 --> 00:25:39,059 podríamos borrarlo 672 00:25:39,059 --> 00:25:44,039 vale, por ejemplo, me voy yo 673 00:25:44,039 --> 00:25:46,259 al repositorio local, porque se habrá quedado 674 00:25:46,259 --> 00:25:46,640 ahí 675 00:25:46,640 --> 00:25:49,839 era en un users 676 00:25:49,839 --> 00:25:50,339 admin 677 00:25:50,339 --> 00:25:53,119 .m2 678 00:25:53,119 --> 00:25:56,299 Repositori 679 00:25:56,299 --> 00:25:58,960 Uf, bueno, es que tengo el repositorio hasta arriba 680 00:25:58,960 --> 00:25:59,420 De cosas 681 00:25:59,420 --> 00:26:02,279 Una de ellas es lo que acabo de descargar 682 00:26:02,279 --> 00:26:05,000 Lo podría borrar entero, de hecho voy a borrar el repositorio enterito 683 00:26:05,000 --> 00:26:05,920 Lo quito todo, ala 684 00:26:05,920 --> 00:26:07,640 A tomar por saco, fuera 685 00:26:07,640 --> 00:26:11,960 Que no, si luego Maben 686 00:26:11,960 --> 00:26:15,200 Si necesita algo porque lo ve que está en dependencias 687 00:26:15,200 --> 00:26:16,339 Se lo va a descargar otra vez 688 00:26:16,339 --> 00:26:20,339 Bueno, esto no me deja 689 00:26:20,339 --> 00:26:22,599 Pero tengo el eclipse abierto, yo creo 690 00:26:22,599 --> 00:26:27,799 me voy a perder tiempo aquí con esto 691 00:26:27,799 --> 00:26:28,140 bueno 692 00:26:28,140 --> 00:26:30,920 esto ha dejado 693 00:26:30,920 --> 00:26:33,099 vale, pues nada 694 00:26:33,099 --> 00:26:35,900 pero las dependencias 695 00:26:35,900 --> 00:26:37,119 que nos importan a nosotros 696 00:26:37,119 --> 00:26:39,579 son las de JavaFX 697 00:26:39,579 --> 00:26:41,500 vale, pues entonces 698 00:26:41,500 --> 00:26:42,779 os voy a subir a la aula virtual 699 00:26:42,779 --> 00:26:45,200 un POM con esas dependencias 700 00:26:45,200 --> 00:26:48,799 y 701 00:26:48,799 --> 00:26:52,940 las copiáis ahí 702 00:26:52,940 --> 00:26:55,299 cuando os hayáis 703 00:26:55,299 --> 00:26:57,200 Copiado el properties, ya se os quitarán 704 00:26:57,200 --> 00:26:59,000 Estos errores que os aparecían aquí, ¿vale? 705 00:27:00,240 --> 00:27:00,720 Entonces 706 00:27:00,720 --> 00:27:02,740 Podríais quitar el properties 707 00:27:02,740 --> 00:27:04,740 Y poner aquí 25 708 00:27:04,740 --> 00:27:07,299 Tal cual, ¿vale? 25 709 00:27:07,299 --> 00:27:09,240 ¿Vale? Lo que pasa 710 00:27:09,240 --> 00:27:11,059 Es que yo lo he hecho así, porque 711 00:27:11,059 --> 00:27:12,920 Si incorporamos más dependencias 712 00:27:12,920 --> 00:27:15,420 En lugar de poner el 25 713 00:27:15,420 --> 00:27:16,920 En todas partes, pongo esto 714 00:27:16,920 --> 00:27:18,079 Que es el nombre de la variable 715 00:27:18,079 --> 00:27:20,640 Y la variable está declarada arriba 716 00:27:20,640 --> 00:27:21,339 ¿Por qué 25? 717 00:27:22,119 --> 00:27:25,019 A ver, es la versión de JavaFX 718 00:27:25,019 --> 00:27:26,500 que yo he elegido para poner aquí 719 00:27:26,500 --> 00:27:28,279 los que tengáis 24 720 00:27:28,279 --> 00:27:30,539 no sé si va a ser compatible, si no 721 00:27:30,539 --> 00:27:32,180 tendréis que bajarlo ahí a 24 722 00:27:32,180 --> 00:27:34,980 pero solo habrá que bajarla aquí 723 00:27:34,980 --> 00:27:36,900 porque como lo tenemos puesto 724 00:27:36,900 --> 00:27:38,599 en variable no habrá que tocarlo en todas partes 725 00:27:38,599 --> 00:27:39,940 y ahí la ventaja de que sea en variable 726 00:27:39,940 --> 00:27:41,140 ¿y en Mave y Compile? 727 00:27:42,279 --> 00:27:45,420 ¿en qué nivel de compilación va a compilar Mave? 728 00:27:45,599 --> 00:27:47,220 entonces los que tengáis el 24 729 00:27:47,220 --> 00:27:48,740 la JDK 24 730 00:27:48,740 --> 00:27:50,640 eso sí que sí tendréis que cambiarlo de 24 731 00:27:50,640 --> 00:27:57,450 ya deberíamos saber 732 00:27:57,450 --> 00:27:58,549 si nos va a dar problemas 733 00:27:58,549 --> 00:27:59,589 no 734 00:27:59,589 --> 00:28:02,730 cuando surjan los problemas 735 00:28:02,730 --> 00:28:04,369 ya se arreglarán 736 00:28:04,369 --> 00:28:05,589 igual es el jdk 737 00:28:05,589 --> 00:28:12,309 para java fx 738 00:28:12,309 --> 00:28:13,630 no lo sé 739 00:28:13,630 --> 00:28:14,910 pero hasta cual quieres bajar 740 00:28:14,910 --> 00:28:19,609 prueba a ver 741 00:28:19,609 --> 00:28:20,869 por el 21 742 00:28:20,869 --> 00:28:27,490 Normalmente del 17 en adelante 743 00:28:27,490 --> 00:28:28,529 Casi todo funciona 744 00:28:28,529 --> 00:28:30,869 Hay como ciertos JDKs 745 00:28:30,869 --> 00:28:32,609 Que son como saltos críticos 746 00:28:32,609 --> 00:28:33,809 1, 8, 1 747 00:28:33,809 --> 00:28:36,069 Y el 17 por otro 748 00:28:36,069 --> 00:28:38,250 Entonces, bueno, prueba 749 00:28:38,250 --> 00:28:41,569 Si no ha descargado un JDK 750 00:28:41,569 --> 00:28:42,630 Es un minuto 751 00:28:42,630 --> 00:28:43,730 Vale 752 00:28:43,730 --> 00:28:46,730 Bueno, pues entonces 753 00:28:46,730 --> 00:28:48,410 Las dependencias ya están 754 00:28:48,410 --> 00:28:50,369 las habéis copiado en su versión 25 755 00:28:50,369 --> 00:28:52,569 24, la que sea 756 00:28:52,569 --> 00:28:54,630 y cuando 757 00:28:54,630 --> 00:28:55,890 le habéis dado a guardar 758 00:28:55,890 --> 00:28:58,410 pues automáticamente, ahora ya 759 00:28:58,410 --> 00:29:00,130 sí que sí, ¿dónde estoy yo? aquí 760 00:29:00,130 --> 00:29:01,809 os ha aparecido 761 00:29:01,809 --> 00:29:05,720 esto, que ahí están 762 00:29:05,720 --> 00:29:07,240 las clases que vamos a usar 763 00:29:07,240 --> 00:29:09,579 el stage, el screen, el botón 764 00:29:09,579 --> 00:29:11,339 el layout, el panel 765 00:29:11,339 --> 00:29:13,660 el control, lo que sea 766 00:29:13,660 --> 00:29:15,299 están todas ahí 767 00:29:15,299 --> 00:29:16,799 ¿vale? en esos hard 768 00:29:16,799 --> 00:29:19,480 luego eso ya lo tenemos, esa parte 769 00:29:19,480 --> 00:29:24,700 entonces, uno podría 770 00:29:24,700 --> 00:29:27,700 pretender 771 00:29:27,700 --> 00:29:29,880 ahora ya arrancar su aplicación porque tiene 772 00:29:29,880 --> 00:29:30,559 las clases 773 00:29:30,559 --> 00:29:33,759 pues vamos a hacer como si quisiéramos 774 00:29:33,759 --> 00:29:36,059 hacer nuestra primera aplicación JavaFX 775 00:29:36,059 --> 00:29:37,380 total, ya tenemos las clases 776 00:29:37,380 --> 00:29:39,539 pues venga 777 00:29:39,539 --> 00:29:41,779 estamos más o menos todos a la vez 778 00:29:41,779 --> 00:29:43,539 nos vamos a 779 00:29:43,539 --> 00:29:44,720 srcmenjava 780 00:29:44,720 --> 00:29:47,640 que este es como si fuera pues eso 781 00:29:47,640 --> 00:29:49,960 el antiguo src de los java project 782 00:29:49,960 --> 00:29:51,740 el antiguo src, ahora es este 783 00:29:51,740 --> 00:29:55,279 Y aquí nos vamos a hacer nuestro primer paquete 784 00:29:55,279 --> 00:29:56,240 Con esta primera aplicación 785 00:29:56,240 --> 00:29:59,299 Pero hombre, para ser coherentes con el grupo 786 00:29:59,299 --> 00:30:00,680 Que hemos marcado 787 00:30:00,680 --> 00:30:03,099 Para ser coherentes 788 00:30:03,099 --> 00:30:03,920 Con este grupo 789 00:30:03,920 --> 00:30:06,359 Vamos a, ¿dónde estamos? 790 00:30:07,259 --> 00:30:09,059 Vamos a crearnos un paquete que se llame 791 00:30:09,059 --> 00:30:10,559 EsDAM1, como sea 792 00:30:10,559 --> 00:30:13,519 Pues venga, me voy a hacer mi primer paquetillo 793 00:30:13,519 --> 00:30:14,240 Que es 794 00:30:14,240 --> 00:30:16,779 Es.DAM1. 795 00:30:17,779 --> 00:30:19,380 Pues app, por ejemplo 796 00:30:19,380 --> 00:30:27,569 Eso son las carpetas 797 00:30:27,569 --> 00:30:29,049 Esto es un paquete 798 00:30:29,049 --> 00:30:30,769 Es .dam 1.app 799 00:30:30,769 --> 00:30:33,349 Esto ya sabemos que significa 800 00:30:33,349 --> 00:30:35,970 Que se traduce en que aparecerán tres carpetas 801 00:30:35,970 --> 00:30:37,569 Pero paquete es uno 802 00:30:37,569 --> 00:30:43,809 Vale, pues ya está 803 00:30:43,809 --> 00:30:48,400 Para organizar mis clases 804 00:30:48,400 --> 00:30:49,839 En una arquitectura jerárquica 805 00:30:49,839 --> 00:30:52,480 Que es mucho más clara 806 00:30:52,480 --> 00:30:53,200 Organizada 807 00:30:53,200 --> 00:30:54,819 entonces no es lo mismo 808 00:30:54,819 --> 00:30:57,279 que mi aplicación tenga paquetes 809 00:30:57,279 --> 00:30:59,160 que sean paquete 1, paquete 2, paquete 3 810 00:30:59,160 --> 00:31:00,359 que tenga paquetes que sean 811 00:31:00,359 --> 00:31:02,940 dam 1, paquete 1, dam 1, paquete 2 812 00:31:02,940 --> 00:31:05,000 yo automáticamente veo que todo es una aplicación 813 00:31:05,000 --> 00:31:06,680 de dam 1, más bonito 814 00:31:06,680 --> 00:31:08,859 vale, pues venga 815 00:31:08,859 --> 00:31:11,200 ahora ya nos podemos hacer nuestra primera 816 00:31:11,200 --> 00:31:12,960 aplicación esta 817 00:31:12,960 --> 00:31:13,680 pues sale 818 00:31:13,680 --> 00:31:15,259 una 819 00:31:15,259 --> 00:31:19,059 aplicación con java 820 00:31:19,059 --> 00:31:19,980 fx 821 00:31:19,980 --> 00:31:22,740 hacemos una nueva clase, pues venga 822 00:31:22,740 --> 00:31:24,799 Primera ventana, como la queráis llamar 823 00:31:24,799 --> 00:31:27,619 Primera ventana 824 00:31:27,619 --> 00:31:29,160 Una primera ventana de prueba 825 00:31:29,160 --> 00:31:32,279 Pues mi primera ventana 826 00:31:32,279 --> 00:31:36,799 Para que este sea 827 00:31:36,799 --> 00:31:38,579 El punto de arranque de una aplicación 828 00:31:38,579 --> 00:31:39,299 JavaFX 829 00:31:39,299 --> 00:31:42,519 Tiene que heredar 830 00:31:42,519 --> 00:31:43,980 De 831 00:31:43,980 --> 00:31:45,960 La clase Application 832 00:31:45,960 --> 00:31:47,359 Extends 833 00:31:47,359 --> 00:31:49,299 Application 834 00:31:49,299 --> 00:31:54,670 Tiene que heredar de aquí 835 00:31:54,670 --> 00:31:58,779 y ahora, ¿esto dónde está? 836 00:31:59,359 --> 00:32:00,400 pues él me lo ofrece 837 00:32:00,400 --> 00:32:02,700 me lo ofrece aquí 838 00:32:02,700 --> 00:32:05,720 gracias a que yo tengo 839 00:32:05,720 --> 00:32:07,259 la dependencia incorporada 840 00:32:07,259 --> 00:32:08,680 si no hubiera hecho lo de Mave 841 00:32:08,680 --> 00:32:10,180 ni hubiera puesto las dependencias 842 00:32:10,180 --> 00:32:12,160 esto no me lo ofrecería 843 00:32:12,160 --> 00:32:14,539 pero esto forma parte 844 00:32:14,539 --> 00:32:17,119 de los hard que yo acabo de incorporar 845 00:32:17,119 --> 00:32:17,920 pues ala 846 00:32:17,920 --> 00:32:20,059 ahí lo pongo, tan feliz 847 00:32:20,059 --> 00:32:25,059 vale, entonces 848 00:32:25,059 --> 00:32:27,079 al heredar de application me dice 849 00:32:27,079 --> 00:32:31,619 oye tú, tienes que implementar los métodos 850 00:32:31,619 --> 00:32:34,599 o volverte abstracto, lo que sea, lo siento. 851 00:32:34,839 --> 00:32:36,660 Pues venga, vamos a implementarlos. 852 00:32:40,309 --> 00:32:42,170 Bueno, pues este es el método 853 00:32:42,170 --> 00:32:44,789 que cuando yo arranque la aplicación, 854 00:32:45,410 --> 00:32:47,670 la aplicación va a arrancar aquí, en Start. 855 00:32:48,349 --> 00:32:51,130 Y el Start va a construir un Stage. 856 00:32:52,130 --> 00:32:55,589 El Stage es el marco básico que no tiene nada. 857 00:32:56,069 --> 00:32:57,509 No tiene nada todavía. 858 00:32:57,509 --> 00:33:00,289 En ese stage es como el frame, el marquito 859 00:33:00,289 --> 00:33:00,990 Que no tiene nada 860 00:33:00,990 --> 00:33:04,009 Yo lo más que puedo hacerle es 861 00:33:04,009 --> 00:33:06,170 Hacerle visible 862 00:33:06,170 --> 00:33:12,480 ¿Vale? 863 00:33:13,960 --> 00:33:15,000 Y en principio 864 00:33:15,000 --> 00:33:17,319 Lo único que va a hacer esta aplicación mía 865 00:33:17,319 --> 00:33:19,660 Es ese marco, ese stage 866 00:33:19,660 --> 00:33:21,079 Que no tiene nada 867 00:33:21,079 --> 00:33:23,480 Porque no le he puesto nada, pues hacerlo visible 868 00:33:23,480 --> 00:33:24,880 Y ya está 869 00:33:24,880 --> 00:33:27,119 Y la aplicación se va a quedar ahí esperando a que pasen cosas 870 00:33:27,119 --> 00:33:28,619 Que no va a pasar nada 871 00:33:28,619 --> 00:33:30,299 Porque es que no tengo yo ni capturado de bender 872 00:33:30,299 --> 00:33:31,099 Yo he capturado nada 873 00:33:31,099 --> 00:33:33,859 claro, para verlo 874 00:33:33,859 --> 00:33:35,220 habría que ejecutar, ¿vale? 875 00:33:35,319 --> 00:33:38,079 entonces, para ejecutar 876 00:33:38,079 --> 00:33:39,000 tiene que haber un main 877 00:33:39,000 --> 00:33:41,680 ¿verdad? y el main 878 00:33:41,680 --> 00:33:43,680 es el que hace el lanzado, entonces 879 00:33:43,680 --> 00:33:45,220 el main 880 00:33:45,220 --> 00:33:49,900 será un método que tenga esto 881 00:33:49,900 --> 00:33:50,539 a ver 882 00:33:50,539 --> 00:33:53,599 hacemos aquí un main 883 00:33:53,599 --> 00:33:57,579 stage es la raíz 884 00:33:57,579 --> 00:33:59,859 de cualquier aplicación con interfaz gráfica 885 00:33:59,859 --> 00:34:01,980 el stage es el marco 886 00:34:01,980 --> 00:34:04,000 De toda la vida, que lo único que tiene es 887 00:34:04,000 --> 00:34:05,859 Esto, un stage es esto de arriba 888 00:34:05,859 --> 00:34:08,480 Con este botón, este botón 889 00:34:08,480 --> 00:34:09,139 Y este botón 890 00:34:09,139 --> 00:34:12,139 ¿Vale? Entonces 891 00:34:12,139 --> 00:34:36,059 Vale, pues para que la aplicación 892 00:34:36,059 --> 00:34:37,219 Arranque tiene que tener un main 893 00:34:37,219 --> 00:34:38,820 Porque esto es una aplicación de escritorio 894 00:34:38,820 --> 00:34:41,139 No es una aplicación que la ejecute en su lugar web 895 00:34:41,139 --> 00:34:42,860 Ni la ejecute nadie, es una aplicación de escritorio 896 00:34:42,860 --> 00:34:44,400 La aplicación de escritorio tiene que tener un main 897 00:34:44,400 --> 00:34:45,920 El punto de arranque siempre es el main 898 00:34:45,920 --> 00:34:48,659 Vale, pues JavaFX 899 00:34:48,659 --> 00:34:50,739 Está hecha para que este método 900 00:34:50,739 --> 00:34:51,599 Lance pues 901 00:34:51,599 --> 00:34:54,719 Coja los parámetros que sean 902 00:34:54,719 --> 00:34:56,980 Etcétera, etcétera y ya me lanza este stage 903 00:34:56,980 --> 00:34:59,099 Así es como está 904 00:34:59,099 --> 00:35:00,480 Entonces yo me puedo 905 00:35:00,480 --> 00:35:02,059 Plantear, decir, pues venga 906 00:35:02,059 --> 00:35:03,380 Vamos a arrancar esto 907 00:35:03,380 --> 00:35:06,360 A ver si realmente veo ese frame 908 00:35:06,360 --> 00:35:08,239 Entonces voy 909 00:35:08,239 --> 00:35:09,420 Y me voy al 910 00:35:09,420 --> 00:35:13,860 Runas Hub Application de toda la vida 911 00:35:13,860 --> 00:35:18,079 Y me encuentro con esto 912 00:35:18,079 --> 00:35:20,300 Me dice 913 00:35:20,300 --> 00:35:22,880 Lo siento pero es que no encuentro 914 00:35:22,880 --> 00:35:24,699 las cosas de JavaFX 915 00:35:24,699 --> 00:35:26,800 es que no las encuentro, no puedo lanzar esto 916 00:35:26,800 --> 00:35:28,980 claro 917 00:35:28,980 --> 00:35:31,119 porque esto liga con lo que decíamos 918 00:35:31,119 --> 00:35:32,619 antes, es que 919 00:35:32,619 --> 00:35:35,119 el arrancado no es tan 920 00:35:35,119 --> 00:35:36,880 fácil como antes, ahora 921 00:35:36,880 --> 00:35:39,119 como las librerías de JavaFX 922 00:35:39,119 --> 00:35:40,719 están modularizadas 923 00:35:40,719 --> 00:35:42,960 para arrancar hay que decirle 924 00:35:42,960 --> 00:35:44,340 donde están los módulos para el inbound 925 00:35:44,340 --> 00:35:45,780 entonces eso 926 00:35:45,780 --> 00:35:48,679 se podría hacer creando una configuración 927 00:35:48,679 --> 00:35:50,500 de ejecución, pasándole 928 00:35:50,500 --> 00:35:52,139 rutas del módulo de path, etc 929 00:35:52,139 --> 00:35:54,940 pero podéis preguntar a HGPT 930 00:35:54,940 --> 00:35:56,800 y os dirá unos comandos 931 00:35:56,800 --> 00:35:58,380 no sé que los probáis y al cabo de un rato 932 00:35:58,380 --> 00:35:59,539 pues lo ejecutaré 933 00:35:59,539 --> 00:36:02,579 pero no tiene sentido si estamos usando 934 00:36:02,579 --> 00:36:04,860 maven, que es esto de repente 935 00:36:04,860 --> 00:36:06,719 de pasar de maven, porque cuando yo hago 936 00:36:06,719 --> 00:36:08,019 el runas java application 937 00:36:08,019 --> 00:36:10,260 estoy pasando de maven completamente 938 00:36:10,260 --> 00:36:11,960 estoy ejecutando yo a mano 939 00:36:11,960 --> 00:36:14,519 y encima mal, porque le tengo que pasar parámetros 940 00:36:14,519 --> 00:36:15,380 que no lo estoy pasando 941 00:36:15,380 --> 00:36:18,719 entonces hombre, si he hecho el proyecto con maven 942 00:36:18,719 --> 00:36:20,800 me ha hecho 943 00:36:20,800 --> 00:36:22,099 de las dependencias, muy bien 944 00:36:22,099 --> 00:36:24,659 pero que también me automatice 945 00:36:24,659 --> 00:36:26,179 la tarea de ejecutar 946 00:36:26,179 --> 00:36:29,039 e incorporar 947 00:36:29,039 --> 00:36:30,760 los caminos a los módulos 948 00:36:30,760 --> 00:36:31,440 y todo eso 949 00:36:31,440 --> 00:36:34,380 bueno, pues eso Maven como lo puede hacer 950 00:36:34,380 --> 00:36:36,659 a través de una cosa que se llama 951 00:36:36,659 --> 00:36:38,780 plugin, los plugins de 952 00:36:38,780 --> 00:36:40,599 Maven famosos, entonces Maven 953 00:36:40,599 --> 00:36:42,559 tiene un montón de plugins posibles 954 00:36:42,559 --> 00:36:43,940 que yo puedo configurar en el con 955 00:36:43,940 --> 00:36:46,659 plugin de ejecución, plugin de compilación 956 00:36:46,659 --> 00:36:47,780 plugin de pruebas 957 00:36:47,780 --> 00:36:50,880 y entonces yo lo que haré, ya me olvidaré 958 00:36:50,880 --> 00:36:53,139 de ejecutar la aplicación como java aplicatio 959 00:36:53,139 --> 00:36:54,340 me olvidaré y le diré 960 00:36:54,340 --> 00:36:56,059 oye tú maven 961 00:36:56,059 --> 00:36:59,099 ejecuta tu plugin 962 00:36:59,099 --> 00:37:00,860 de lo que sea, en mi caso 963 00:37:00,860 --> 00:37:01,579 será ejecución 964 00:37:01,579 --> 00:37:04,840 y yo habré configurado ese plugin para que ya se 965 00:37:04,840 --> 00:37:06,079 ejecute correctamente 966 00:37:06,079 --> 00:37:08,900 luego vamos a decir, vamos a 967 00:37:08,900 --> 00:37:11,179 darle a maven un plugin de ejecución 968 00:37:11,179 --> 00:37:12,699 para java fx 969 00:37:12,699 --> 00:37:15,039 con los parámetros 970 00:37:15,039 --> 00:37:17,219 de java fx con toda la información necesaria 971 00:37:17,219 --> 00:37:18,679 pues eso 972 00:37:18,679 --> 00:37:20,500 si volvéis a abrir el que yo os he dado 973 00:37:20,500 --> 00:37:23,340 veis que hay un nodo 974 00:37:23,340 --> 00:37:25,059 plugins 975 00:37:25,059 --> 00:37:26,800 que podéis poner 976 00:37:26,800 --> 00:37:29,579 después del build 977 00:37:29,579 --> 00:37:30,179 ¿vale? 978 00:37:31,239 --> 00:37:33,380 perdón, dentro del build, del nodo build 979 00:37:33,380 --> 00:37:36,059 un plugin 980 00:37:36,059 --> 00:37:37,699 un nodo plugins 981 00:37:37,699 --> 00:37:39,860 ¿vale? este que tengo comentado 982 00:37:39,860 --> 00:37:41,320 lo ignoráis, esto ya no 983 00:37:41,320 --> 00:37:43,480 ¿vale? y 984 00:37:43,480 --> 00:37:45,039 copiáis este 985 00:37:45,039 --> 00:37:47,860 lo copiamos 986 00:37:47,860 --> 00:37:54,420 y ahora lo explico 987 00:37:54,420 --> 00:37:54,860 ¿vale? 988 00:37:55,400 --> 00:38:11,000 Entonces, copiamos esto, nos vamos al POM otra vez, build, está sin hacer todavía, pues venga. 989 00:38:12,079 --> 00:38:14,699 Bueno, vamos a copiarlo todo el build entero desde aquí y ya está. 990 00:38:16,340 --> 00:38:25,300 Copiamos todo esto, todo el build con todo el plugin que tiene dentro. 991 00:38:30,230 --> 00:38:34,969 Esto que está comentado fuera, fuera, lo quitamos, así no metemos ruido. 992 00:38:41,000 --> 00:38:42,800 Vale, más bonito así tabulado. 993 00:38:46,130 --> 00:38:59,619 Bueno, pues le he metido un plugin para ejecutar JavaFX, ¿vale? 994 00:38:59,619 --> 00:39:06,599 Le he metido este plugin, se llama JavaFX y es para ejecutar JavaFX. 995 00:39:07,360 --> 00:39:14,519 Y además le estoy diciendo cuál es la clase de arranque de esa ejecución. 996 00:39:15,360 --> 00:39:19,340 La clase de arranque de esa ejecución es uno como lo hayáis llamado. 997 00:39:20,199 --> 00:39:22,280 Primera ventana, pues habrá que cambiarlo. 998 00:39:22,280 --> 00:39:23,940 esdam1.app 999 00:39:23,940 --> 00:39:26,340 cuidado, ponerla 1000 00:39:26,340 --> 00:39:27,159 correctamente 1001 00:39:27,159 --> 00:39:29,960 primera 1002 00:39:29,960 --> 00:39:37,719 ventana, vale 1003 00:39:37,719 --> 00:39:39,400 aseguraros que en este plugin 1004 00:39:39,400 --> 00:39:41,719 tenéis puesta 1005 00:39:41,719 --> 00:39:43,639 la clase main, donde está 1006 00:39:43,639 --> 00:39:44,519 vuestro método main 1007 00:39:44,519 --> 00:39:47,639 con su nombre completo 1008 00:39:47,639 --> 00:39:49,880 que recordad que el nombre completo es el nombre del paquete 1009 00:39:49,880 --> 00:39:55,320 siempre, a ver 1010 00:39:55,320 --> 00:39:56,260 yo esto de aquí 1011 00:39:56,260 --> 00:39:59,619 lo he tenido que poner porque tengo muchas JDK 1012 00:39:59,619 --> 00:40:01,920 entonces al tener muchas jdk 1013 00:40:01,920 --> 00:40:02,980 si no lo ponía 1014 00:40:02,980 --> 00:40:06,119 él tiraba de una jdk que tengo 1015 00:40:06,119 --> 00:40:08,059 en la java home porque la necesito para otro 1016 00:40:08,059 --> 00:40:10,039 servidor y esa es de 1017 00:40:10,039 --> 00:40:12,219 1.8 y 1.8 1018 00:40:12,219 --> 00:40:14,219 no era compatible, entonces le he dicho 1019 00:40:14,219 --> 00:40:15,559 no, no, tu maven plugin 1020 00:40:15,559 --> 00:40:17,480 tu maven ejecútate con esta 1021 00:40:17,480 --> 00:40:20,119 si vosotros solo tenéis una jdk 1022 00:40:20,119 --> 00:40:22,179 podéis quitar eso, más que nada 1023 00:40:22,179 --> 00:40:24,019 porque vuestra ruta ni siquiera será esta a lo mejor 1024 00:40:24,019 --> 00:40:27,219 vale, entonces repito 1025 00:40:27,219 --> 00:40:29,079 esto es opcional 1026 00:40:29,079 --> 00:40:31,159 es para especificar 1027 00:40:31,159 --> 00:40:33,739 que JDK va a ejecutar este plugin 1028 00:40:33,739 --> 00:40:35,539 entonces 1029 00:40:35,539 --> 00:40:36,780 yo he tenido que ponerlo 1030 00:40:36,780 --> 00:40:39,340 porque tengo muchos JDK 1031 00:40:39,340 --> 00:40:41,199 y entonces el plugin 1032 00:40:41,199 --> 00:40:43,139 tira del que tenga en esta variable 1033 00:40:43,139 --> 00:40:44,280 otros no tenéis tampoco 1034 00:40:44,280 --> 00:40:45,840 y esta tenía otra 1035 00:40:45,840 --> 00:40:49,159 pero si vos solo tenéis un JDK instalado 1036 00:40:49,159 --> 00:40:51,320 pues esto 1037 00:40:51,320 --> 00:40:53,079 lo podéis quitar directamente 1038 00:40:53,079 --> 00:40:58,789 pues pon aquí 1039 00:40:58,789 --> 00:41:00,530 la que tú quieras usar, pon aquí la ruta 1040 00:41:00,530 --> 00:41:02,610 del JDK que deberías poner 1041 00:41:02,610 --> 00:41:04,849 la misma en la que 1042 00:41:04,849 --> 00:41:06,730 está tu proyecto, la que has puesto para tu proyecto. 1043 00:41:07,570 --> 00:41:08,469 Te pones aquí la ruta 1044 00:41:08,469 --> 00:41:10,769 ese JDK con el bin java.exe 1045 00:41:11,610 --> 00:41:12,429 ¿vale? 1046 00:41:14,070 --> 00:41:14,750 Porque esta es 1047 00:41:14,750 --> 00:41:16,610 la máquina virtual de este JDK. 1048 00:41:18,230 --> 00:41:18,769 Pues esta es la 1049 00:41:18,769 --> 00:41:20,710 máquina virtual que tiene que ejecutar ese plugin. 1050 00:41:24,559 --> 00:41:25,239 Bueno, ¿habéis 1051 00:41:25,239 --> 00:41:26,579 copiado el plugin en el Pong? 1052 00:41:35,449 --> 00:41:36,710 Vale, para verificar 1053 00:41:36,710 --> 00:41:39,170 que no estamos haciendo cosas raras 1054 00:41:39,170 --> 00:41:41,489 con el Maven, de vez en cuando 1055 00:41:41,489 --> 00:41:43,670 y que está tomando las últimas actualizaciones 1056 00:41:43,670 --> 00:41:45,389 hay una cosa que hay que hacer 1057 00:41:45,389 --> 00:41:47,389 con cierta regularidad, sobre todo si nos fallan 1058 00:41:47,389 --> 00:41:49,210 las cosas, que es 1059 00:41:49,210 --> 00:41:50,230 actualizar 1060 00:41:50,230 --> 00:41:52,550 reconstruir el proyecto 1061 00:41:52,550 --> 00:41:54,809 con los cambios que hemos hecho 1062 00:41:54,809 --> 00:41:57,090 entonces si al proyecto 1063 00:41:57,090 --> 00:41:59,190 le dais botón derecho 1064 00:41:59,190 --> 00:42:01,469 y os vais a 1065 00:42:01,469 --> 00:42:03,309 a 1066 00:42:03,309 --> 00:42:05,010 Maven 1067 00:42:05,010 --> 00:42:07,349 a la pestaña 1068 00:42:07,349 --> 00:42:09,030 al ítem Maven 1069 00:42:09,030 --> 00:42:11,449 hay una cosa que pone actualizar proyecto 1070 00:42:11,449 --> 00:42:13,530 entonces conviene 1071 00:42:13,530 --> 00:42:15,429 cuando hacéis cambios en el POM o algo 1072 00:42:15,429 --> 00:42:17,889 os vais ahí 1073 00:42:17,889 --> 00:42:19,449 botón derecho, maven 1074 00:42:19,449 --> 00:42:20,989 actualizar proyecto 1075 00:42:20,989 --> 00:42:23,550 marcáis 1076 00:42:23,550 --> 00:42:25,349 que proyecto maven quieres actualizar 1077 00:42:25,349 --> 00:42:25,750 ese 1078 00:42:25,750 --> 00:42:28,449 si no os da ningún error 1079 00:42:28,449 --> 00:42:31,210 es que lo que habéis puesto en el POM no es ninguna burrada 1080 00:42:31,210 --> 00:42:33,190 significa eso que luego va a funcionar todo 1081 00:42:33,190 --> 00:42:34,710 pero bueno 1082 00:42:39,030 --> 00:42:40,750 Bueno, hasta aquí hemos llegado todos. 1083 00:42:41,130 --> 00:42:42,409 Tenemos ya el plugin puesto. 1084 00:42:43,989 --> 00:42:48,429 Vale, pues este es al que hay que llamar para decirle, 1085 00:42:48,590 --> 00:42:50,110 oye, tú, lanza la ejecución. 1086 00:42:50,530 --> 00:42:54,909 Porque tú, plugin de Maven, sí que sabes entenderte con los 1087 00:42:54,909 --> 00:42:58,369 módulos, sabes recuperarlos, encontrarlos tú y sabes 1088 00:42:58,369 --> 00:42:58,909 entenderlos. 1089 00:42:59,349 --> 00:43:01,949 Entonces, ahora ya, cuando usamos Maven, 1090 00:43:02,949 --> 00:43:05,469 se acabó el Runas Java Application. 1091 00:43:05,469 --> 00:43:06,510 Se acabó. 1092 00:43:06,510 --> 00:43:08,610 Ahora usando maven 1093 00:43:08,610 --> 00:43:11,489 Hay que ejecutar maven 1094 00:43:11,489 --> 00:43:12,550 Y decirle a maven 1095 00:43:12,550 --> 00:43:15,389 Tú, lánzate con este plugin 1096 00:43:15,389 --> 00:43:16,210 Vale 1097 00:43:16,210 --> 00:43:19,170 Pues como hacemos eso, ya se acabó 1098 00:43:19,170 --> 00:43:21,329 El, repito 1099 00:43:21,329 --> 00:43:23,030 El runas java application, es decir 1100 00:43:23,030 --> 00:43:23,489 Esto 1101 00:43:23,489 --> 00:43:27,329 Este runas java 1102 00:43:27,329 --> 00:43:28,909 Application se acabó 1103 00:43:28,909 --> 00:43:31,809 Este ya nada 1104 00:43:31,809 --> 00:43:34,929 Porque si usamos esto 1105 00:43:34,929 --> 00:43:37,869 estamos tratando de ejecutar la aplicación 1106 00:43:37,869 --> 00:43:38,829 pasando de Maven 1107 00:43:38,829 --> 00:43:40,969 y eso es lo que no nos funciona 1108 00:43:40,969 --> 00:43:43,210 porque pasar de Maven implica 1109 00:43:43,210 --> 00:43:45,070 ya no gestionar los módulos, etc. 1110 00:43:45,650 --> 00:43:47,489 Entonces, ¿qué es lo que tenemos que dar? 1111 00:43:49,190 --> 00:43:49,949 Maven Build 1112 00:43:49,949 --> 00:43:51,610 que es, oye tú 1113 00:43:51,610 --> 00:43:53,730 venga, dale 1114 00:43:53,730 --> 00:43:57,019 sí 1115 00:43:57,019 --> 00:44:01,070 porque es otra cosa 1116 00:44:01,070 --> 00:44:03,489 el Maven Clean es limpio en el proyecto 1117 00:44:03,489 --> 00:44:05,469 de mierdas, de dependencias que ya no 1118 00:44:05,469 --> 00:44:07,510 uses, quítalas del path, etc. 1119 00:44:08,769 --> 00:44:10,349 vale, pues entonces 1120 00:44:10,349 --> 00:44:17,289 vale, pues entonces 1121 00:44:17,289 --> 00:44:18,269 Maven Bill me dice 1122 00:44:18,269 --> 00:44:20,329 ah, muy bien, vale 1123 00:44:20,329 --> 00:44:21,449 entonces aquí ya 1124 00:44:21,449 --> 00:44:24,969 nos contesta Maven a la orden que hemos dado 1125 00:44:24,969 --> 00:44:25,650 tú Bill 1126 00:44:25,650 --> 00:44:27,690 pues él nos contesta 1127 00:44:27,690 --> 00:44:30,309 y nos dice, muy bien, pero ¿qué hago? 1128 00:44:31,030 --> 00:44:32,889 me dice, ¿cuál es tu objetivo en la vida? 1129 00:44:34,949 --> 00:44:36,650 te pide que se lo escribas aquí en Gold 1130 00:44:36,650 --> 00:44:38,730 vale, yo me he despertado 1131 00:44:38,730 --> 00:44:41,889 pero ahora que quieres que ejecute 1132 00:44:41,889 --> 00:44:43,030 yo, que quieres que haga 1133 00:44:43,030 --> 00:44:45,769 pues maven que es lo que 1134 00:44:45,769 --> 00:44:47,610 puede ejecutar, a quien puede 1135 00:44:47,610 --> 00:44:49,010 llamar a los plugins 1136 00:44:49,010 --> 00:44:51,769 pues venga, ya tenemos uno 1137 00:44:51,769 --> 00:44:53,849 que es este plugin de aquí 1138 00:44:53,849 --> 00:45:00,710 no puedo cerrar esto 1139 00:45:00,710 --> 00:45:04,969 bueno da igual, ya tenemos uno que es 1140 00:45:04,969 --> 00:45:06,690 este que hemos 1141 00:45:06,690 --> 00:45:08,449 puesto, que se llamaba java fx 1142 00:45:08,449 --> 00:45:10,510 verdad, era java fx maven 1143 00:45:10,510 --> 00:45:12,610 plugin, pues vamos a llamarlo 1144 00:45:12,610 --> 00:45:13,690 así java 1145 00:45:13,690 --> 00:45:15,510 fx 1146 00:45:15,510 --> 00:45:17,769 es decir, aquí 1147 00:45:17,769 --> 00:45:20,429 le ponemos el nombre del plugin 1148 00:45:20,429 --> 00:45:22,570 que queremos que lance 1149 00:45:22,570 --> 00:45:23,409 que es el que hemos puesto 1150 00:45:23,409 --> 00:45:25,730 el nombre, que era java fx 1151 00:45:25,730 --> 00:45:28,469 y ahora, pero el plugin puede 1152 00:45:28,469 --> 00:45:29,329 hacer muchas cosas 1153 00:45:29,329 --> 00:45:32,449 ese plugin puede hacer un montón de historias 1154 00:45:32,449 --> 00:45:34,489 pero no, lo que queremos es que ejecutar 1155 00:45:34,489 --> 00:45:35,909 queremos que te ejecutes 1156 00:45:35,909 --> 00:45:38,630 queremos que hagas la ejecución 1157 00:45:38,630 --> 00:45:40,489 no que hagas la 1158 00:45:40,489 --> 00:45:42,349 compilación y nada, pues dos puntos 1159 00:45:42,349 --> 00:45:44,610 run, esto solo se hace 1160 00:45:44,610 --> 00:45:46,389 una vez, luego ya se queda guardado 1161 00:45:46,389 --> 00:45:48,110 no os luchéis, vale 1162 00:45:48,110 --> 00:45:54,800 llave fx porque es 1163 00:45:54,800 --> 00:45:57,099 el nombre del plugin, dos puntos 1164 00:45:57,099 --> 00:45:59,039 la orden que queremos 1165 00:45:59,039 --> 00:46:00,820 que ese plugin haga, que es 1166 00:46:00,820 --> 00:46:04,420 ejecutar, y ahora 1167 00:46:04,420 --> 00:46:06,260 en name 1168 00:46:06,260 --> 00:46:08,539 si le dais un nombrecito 1169 00:46:08,539 --> 00:46:10,460 ya esa configuración 1170 00:46:10,460 --> 00:46:12,460 se queda guardada, y a partir de ahí 1171 00:46:12,460 --> 00:46:14,320 la ejecución va a ser dar simplemente 1172 00:46:14,320 --> 00:46:16,300 ese nombre, entonces acordaos 1173 00:46:16,300 --> 00:46:18,420 del nombre que hay aquí o ponedle otro 1174 00:46:18,420 --> 00:46:19,659 si queréis, lo que os dé la gana. 1175 00:46:20,679 --> 00:46:22,219 Tiene sentido que sea el nombre del propio 1176 00:46:22,219 --> 00:46:24,199 proyecto. Así yo cuando lo quiero ejecutar, llamo a ese 1177 00:46:24,199 --> 00:46:24,820 proyecto y ya está. 1178 00:46:26,099 --> 00:46:28,260 Pues venga. Y podemos aprovechar y darle 1179 00:46:28,260 --> 00:46:28,860 a run. 1180 00:46:33,760 --> 00:46:34,599 Y ahora 1181 00:46:34,599 --> 00:46:37,300 ya está. 1182 00:46:39,420 --> 00:46:40,960 ¿Vale? Esta es nuestra aplicación. 1183 00:46:42,179 --> 00:46:42,579 Este es un 1184 00:46:42,579 --> 00:46:44,699 stage. La ventanita 1185 00:46:44,699 --> 00:46:46,000 con esto y punto pelota. 1186 00:46:48,400 --> 00:46:49,159 Pena, ¿por qué? 1187 00:46:49,159 --> 00:46:51,079 Porque está esperando y no le vamos a dar nada 1188 00:46:51,079 --> 00:46:53,340 Bueno, pero ya se lo iremos dando 1189 00:46:53,340 --> 00:46:53,679 Bien 1190 00:46:53,679 --> 00:47:01,000 Vale 1191 00:47:01,000 --> 00:47:02,460 Pues 1192 00:47:02,460 --> 00:47:05,579 Así se ha quedado la cosa 1193 00:47:05,579 --> 00:47:09,039 Si le dais a la X 1194 00:47:09,039 --> 00:47:10,579 La aplicación se cierra 1195 00:47:10,579 --> 00:47:13,659 Ya está combinado 1196 00:47:13,659 --> 00:47:21,139 No, o sea, la compilación es automática 1197 00:47:21,139 --> 00:47:23,079 En Eclipse y en Maven cuando tú ejecutas 1198 00:47:23,079 --> 00:47:24,760 A ver, hay un goal de Maven que es 1199 00:47:24,760 --> 00:47:26,659 el compil. O sea, si tú quieres 1200 00:47:26,659 --> 00:47:28,679 compilar sin más, pues tú 1201 00:47:28,679 --> 00:47:30,280 puedes hacer aquí un 1202 00:47:30,280 --> 00:47:34,659 donde estoy 1203 00:47:34,659 --> 00:47:36,280 runas, maven build 1204 00:47:36,280 --> 00:47:38,599 y ahora quiero, oye, ¿qué 1205 00:47:38,599 --> 00:47:40,579 plugin quiero? Quiero el compiler 1206 00:47:40,579 --> 00:47:42,139 que siempre existe, que lo habíamos hecho. 1207 00:47:42,619 --> 00:47:44,239 Tú, compiler, ¿qué quiero que hagas? 1208 00:47:45,579 --> 00:47:46,559 Compilar, compile. 1209 00:47:48,780 --> 00:47:50,019 Con esto estás forzando 1210 00:47:50,019 --> 00:47:52,199 solo una compilación, por ejemplo. 1211 00:47:52,599 --> 00:47:54,079 Pero bueno, como la compilación se hace 1212 00:47:54,079 --> 00:47:55,619 siempre previa a una ejecución, 1213 00:47:56,139 --> 00:47:58,219 ¿Y el Eclipse ya la hace automáticamente? 1214 00:48:07,239 --> 00:48:09,739 Bueno, ya, pero entonces tú lo tendrás que exportar, entonces. 1215 00:48:13,239 --> 00:48:14,000 Exportarlo a un hardware. 1216 00:48:14,619 --> 00:48:18,619 Cualquier aplicación Java, si tú la quieres distribuir, la tienes que exportar a un hardware. 1217 00:48:19,820 --> 00:48:20,219 ¿Vale? 1218 00:48:20,500 --> 00:48:26,079 ¿Exe jamás? 1219 00:48:26,139 --> 00:48:29,159 no, porque esto no es un lenguaje 1220 00:48:29,159 --> 00:48:31,300 de compilación compilado, sino interpretado 1221 00:48:31,300 --> 00:48:33,199 entonces no genera 1222 00:48:33,199 --> 00:48:34,559 un .exe, genera un hard 1223 00:48:34,559 --> 00:48:37,239 que la máquina virtual del equipo que sea lo ejecute 1224 00:48:37,239 --> 00:48:39,159 pero bueno, ya lo haremos 1225 00:48:39,159 --> 00:48:41,400 vale, ¿a todo el mundo 1226 00:48:41,400 --> 00:48:42,179 le ha funcionado? 1227 00:48:42,400 --> 00:48:43,840 no puede ser