El lenguaje Java nos proporciona abstracción de procesos y abstracción de datos. El paso de parámetros es posicional, es decir, la vinculación que existe entre parámetros actuales y formales se realiza por posición. También nos obliga a que coincidan el número, tipo y orden de parámetros actuales y formales. Además no nos permite usar parámetros formales con valores por defecto. Java sólo proporciona funciones (llamadas métodos) aunque estas pueden comportarse como procedimientos, si se indica que no devuelven valor alguno mediante el tipo "void".
El paso de parámetros se realiza en modo de entrada. Los tipos primitivos siempre se pasan por valor y los objetos siempre por referencia. Al contrario que en otros lenguajes, no se puede pasar un método a un método Java. Pero si se podría pasar un objeto a un método y luego llamar a los métodos de ese objeto.
Java soporta la sobrecarga, es decir, permite definir métodos con el mismo nombre siempre que difieran en los argumentos de entrada.
Por ultimo destacar que Java permite subprogramas polimórficos o genéricos a través de su JGL ("Java Generic Library").