I think this is a very simple solution. The area is simply the product of the width and the height. The width and height can be found by calculating the length of intersection of two rectangles along x axis and y axis respectively. The solution is like this:

```
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int width=lengthOfIntersection(A,C,E,G);
int height=lengthOfIntersection(B,D,F,H);
return width*height;
}
int lengthOfIntersection(int A, int B, int C, int D){
int length=Math.min(B,D)-Math.max(A,C);
return length>0?length:0;
}
```

But this fails in the case (0,0,0,0,-1,-1,1,1). My output is 0 but 4 is expected. But from the input we can see the area of the first rectangle is already 0, how can the area of the overlapping part become 4?!