Os métodos de Padrón, uns son APIs e outros non

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? :)