Project Euler #2 Efficiency
The test 

if (fib.doubleValue() % 2 == 0)


does not produce the correct result for numbers with more than 17 digits, because
that exceeds the precision of a double. Actually it returns true for 8944394323791464 and all subsequent Fibonacci numbers.
That is not relevant for the concrete problem here (see below), but if you want to work with BigInteger then you should replace this with

if (fib.remainder(bigTwo).equals(BigInteger.ZERO))


where bigTwo is defined as

BigInteger bigTwo = new BigInteger("2");


Project Euler Problem #2
asks for the sum of all even-valued Fibonacci values not exceeding 4 million,
so using BigInteger is not really necessary. All numbers fit into the range
of int, and the above test simplifies to

if (fib % 2 == 0)


(I also planned to tell that using int instead of BigInteger makes the
program more efficient, but it turned out that the difference in running
time is not significant.)