
The China Question President Bush’s recent visit to Asia made little news – by design . But that’s because Bush didn’t begin to address the issue that is looming ever larger in the region : the changing face of security in Asia in view of China’s growing economic and military might . This summer , for example , China and Russia conducted their first-ever grand-scale joint military exercise . This was followed by Russian news reports that China , Russia , and India would conduct trilateral military exercises , named “ Indira 2005 , ” on the same scale before the end of this year . In the past , such a combination of countries was almost unthinkable , and these exercises cannot be explained away as simple “ one-off ” affairs with little resonance . Instead , they reflect China’s long-term strategic goal of establishing hegemony across Asia . One tool of this ambition is the Shanghai Cooperation Organization ( SCO ) , under which the Sino-Russian exercises took place . Established in June 2001 , the SCO includes China , Russia , Kazakhstan , Kyrgyzstan , Tajikistan , and Uzbekistan . The SCO’s original purpose was to mitigate tensions on the borders of China and the Central Asian countries after the collapse of the Soviet Union and the arrival of the United States military with the war in Afghanistan . China regards the SCO as a stage for broadening its influence over a vast region , ranging from the Asia-Pacific to Southwest Asia , the Middle East , East Africa , and the Indian Ocean . Indeed , its members include about 45 % of the world’s population , and 28 % of the landmass ranging across the Eurasian continent . China’s active leadership of the SCO has resulted in policies that it favors . Gradually , the SCO shifted its focus to fighting Islamic radicals . Nowadays , however , the SCO is often used as a forum to campaign against supposed American unilateralism and to provide a united front – especially between China and Russia – against the US with respect to security and arms-reduction issues in the region . This includes joint anti-terror training and demands to reduce US forces in the region , particularly from Uzbekistan and Kyrgyzstan . The SCO provides China not only with a platform to confront the existing US-led alliance in the Asia-Pacific region , but is increasingly being used to prevent the formation of a US-led network to restrain China’s advance . Ultimately , it is feared that the SCO could develop into a military alliance similar to the Warsaw Pact of the Cold War era , with an embryonic “ Great China Union ” at its core . But China’s regional diplomacy goes far beyond the SCO . It seizes every opportunity that comes its way , including the Six Party Talks on North Korea’s nuclear ambitions , to emphasize its centrality to the settlement of any and all Asian issues . Moreover , it continues to build its “ string of pearls ” of military bases at every key point on maritime transportation routes along the “ arc of instability ” from the Middle East to China’s coast . No one seems to know how to respond to China’s diplomatic and military muscle flexing in Asia , for the extent of China’s ambitions remains utterly unclear . But , while everyone else ponders China’s motives , its government is acting . Indeed , the UK’s premier security think tank , the Institute for International Strategic Studies , recently warned that , while the world focuses on the fight against international terrorism and the unfolding events in the Middle East , China is rapidly expanding its influence from Asia to Africa . The “ pearls ” in Africa include Sudan , Angola , Algeria , Gabon , Namibia , Zambia , Tanzania , Zimbabwe , Uganda , Djibouti , Mali , Central Africa , Liberia , Ethiopia , Mozambique , Sierra Leone , and the Democratic Republic of Congo . In each country , China is nurturing special military and commercial relations intended to promote loyalty to Chinese interests . As in Asia , there is a pattern at work : growing Chinese influence begets increased support for Chinese policies . Of course , it’s a two-way street . Whenever complaints come up in the United Nations ’ Human Rights Committee , China can count on the support of many African countries that have their own human rights problems . Even the selection of Beijing as the site of the 2008 Olympics benefited from “ African votes . ” And China has publicly stated that it will back African nations in potential disputes at the World Trade Organization ( WTO ) and other international organizations . Similarly , many African states now seem to be leaning heavily toward China in its dispute with Taiwan . When Japan’s government tried to become a permanent member of the UN Security Council , few African countries backed its bid , despite receiving economic aid for decades . China likes to boast of its “ peaceful rise . ” But the rise of Bismarck’s Germany at the end of the nineteenth century was also peaceful – for a while . The question is not whether China rises to great-power status peacefully , but whether it intends to remain peaceful when it gets there . Just as the world confronted the “ German Question ” 125 years ago , it is now confronting the “ China Question . ” We need a better answer this time . 