The short answer is that they were able to fight that well because they got a jump on the Allies and then dug in. Had the Allies prepared for the war to the same degree that Germany and Japan did, it would have been over within two years, at most.
Japan was able to hold out for as long as it did for the following reasons:
Racism. The Allies, principally Britain and the US did not believe the Japanese were capable of holding their own against Western powers so they ignored them for far too long. The Allies didn’t study the Japanese war capacity or their aircraft, to name just a couple of example, and were thus completely unprepared for the sudden attack.
Japan’s experience in war. By the time they attacked the Allies, Japan had been at war for four years. It took the US a couple of years to gain sufficient experience itself. Most of 1942 was spent learning the nuts and bolts of actual warfare.
Although GB had been at war for more than two years, it failed to utilize that experience in Asia, principally because of the racism.
The Allies late start and lack of preparations. The US was rapidly expanding its fleet and making other preparations. However, they were too late on making preparations on the ground in PH, PI, Guam and Wake Is.
Had they started six months earlier or postponed the crippling sanctions against Japan for another six months or a year, it would have been an entirely different war. One report by the USAAR after the war made the claim that had the US stationed 2,000 planes on 10 air bases in the Philippine Islands, it would have prevented the war. I agree. Had they provided sufficient training to the native Filipino solders, increased the US presence, improved coastal defenses and such, Japan would not have been able to invade it.
Even if the US didn’t make those preparations, had they simply storied six months of rice for 80,000 men in Baatan, it would also have been a much shorter war.
Sitting right on the shipping lanes for the vital oil and other natural resources, the US could have more effectively blockaded Japan. Also being able to retain their sub bases in Subic Bay would have allowed them to discover the problems with the Mark IV torpedo much sooner.
Wake Island wouldn’t matter, but if the US had fortified and dug into Guam, Japan would be fucked. The US would have a base to attack Saipan and Tinian and combined with the US retaining the Philippines, there’s not a damn thing the Japanese could have done There would be four major battles: Okinawa, Iwo Jima, Kyushu and Kanto. The war would have ended sometime between 1943 and ’44 unless the Japanese surrendered earlier.
The failure to protect Singapore is one of the worst Allied failures. Their appalling efforts or lack thereof is shameful. Had the British believed that there was really a danger and made sufficient preparations, it should not have fallen.
Japan’s [del]sucker punch[/del] drop on the Allies. Hit them hard and when they aren’t looking. Grab as much territory, dig in and make them pay in blood.
Don’t surrender. Fight to the death. Prepare to sacrifice your entire country.