Defensive Programming in Android: Network Access and Java Defensive Techniques