Ayer comenzó el Google I/O 2014. En el discurso de apertura (en la web, muy recomendable), Sundar Pichai presentó un avance de la próxima versión de Android, y lo hizo con, entre otras, esta cita:
This is one of the most comprehensive releases we have done. It has over five thousand new APIs.
Siempre que oigo esto, no puedo evitar levantar una ceja a lo Carlos Sobera. No me digas que no da la impresión de ser una cantidad desmesurada de código, Quijotes enteros de métodos y clases…
Bienvenido a la era del márketing técnico, que yo atribuyo a Steve Jobs, pues fue al primero que vi hacer esto en una conferencia. En realidad, a lo que se refiere el bueno de Sundar es a que han añadido ese número de miembros públicos a clases e interfaces existentes o nuevas. Lo que viene a ser hacer un diff de las APIs y contar métodos. No hay miles de subsistemas nuevos en Android, ni siquiera miles de clases, y la diferencia conceptual es importante.
He de reconocer que la cita no es semánticamente incorrecta, ya que una utilidad que sólo exporte un método público es efectivamente una API… Pero a mí eso me chirría, algo no funciona ahí. Veamos un pequeño ejemplo con la interfaz Iterator de Java:
public interface Iterator<E> { boolean hasNext(); E next(); void remove(); }
Tenemos tres métodos públicos que están relacionados entre sí, actúan sobre la misma información en la implementación y la salida depende de cómo y en qué orden se usen. Entonces, ¿tenemos tres APIs, o tenemos sólo una?
¿Algún alma caritativa me regala un Moto 360? :)