Esse código está forçando a classe que representa o driver MySQL a carregar e inicializar. Em Java, uma classe não é carregada a menos que seja necessário que a classe é carregada. Como o código JDBC geralmente nunca faz referência direta ao driver, ele não seria carregado sem
Class.forName
(ou algumas outras alternativas equivalentes). Observe que é necessário carregar e inicializar a classe, que são 2 coisas diferentes.
Além disso, observe que não é necessário chamar
.newInstance()
-- o inicializador estático do Driver já se registra como um driver JDBC. Por fim, observe que, com a API Service Loader geralmente não é necessário chamar Class.forName() para carregar o driver:ele pode ser carregado automaticamente.