Faits:
A. Par décisions des 12 mai et 17 juillet 2006, l'Office AI Berne a alloué à S._, né en 1980, une demi-rente d'invalidité depuis le 1er mai 2004, fondée sur un degré d'invalidité de 50 %. L'office AI disposait en particulier d'un rapport de la Clinique X._ du 29 juillet 2005, fonctionnant en tant que COMAI.
Dans le cadre d'une révision du droit à cette prestation, l'office AI a recueilli un nouveau rapport d'expertise pluridisciplinaire de la Clinique X._, du 5 mai 2008. Le 19 juin 2008, l'office AI a fait savoir à l'assuré qu'il envisageait de supprimer la rente compte tenu de l'amélioration de l'état de santé, lequel était compatible avec un emploi d'informaticien à 70 %, voire à terme à 100 % avec une prise en charge psychiatrique. S._ a manifesté son opposition, par lettre du 12 août 2008, estimant que la Clinique X._ n'avait pas tenu compte de sa problématique d'apnée du sommeil l'empêchant de travailler davantage qu'à mi-temps. L'office AI a requis un avis complémentaire de la Clinique X._ sur la question de l'apnée du sommeil; le docteur P._ s'est déterminé dans un rapport du 27 octobre 2008.
Par décision du 3 novembre 2008, l'office AI a supprimé la rente après avoir fixé le degré d'invalidité à 30 %.
B. S._ a déféré cette décision au Tribunal administratif du canton de Berne, qui l'a débouté par jugement du 25 mai 2009.
C. S._ interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation ainsi que celle de la décision de l'office AI du 3 novembre 2008, avec suite de frais et dépens.
L'intimé et l'Office fédéral des assurances sociales n'ont pas été invités à se déterminer.
Considérant en droit:
1. Le litige porte sur la suppression de la demi-rente d'invalidité, dans le cadre d'une révision du droit à cette prestation.
2. La juridiction cantonale a exposé correctement les règles applicables à la solution du litige, si bien qu'il suffit de renvoyer au jugement attaqué.
3. Le recourant se prévaut d'une constatation manifestement inexacte des faits pertinents, au sens de l'art. 97 LTF, ainsi que d'une violation de l'art. 4 LAI. A son avis, les rapports d'expertise de la Clinique X._ (des 5 mai et 27 octobre 2008) sont dénués de force probante et ont induit le Tribunal administratif en erreur quant à l'incidence de l'apnée du sommeil sur sa capacité de travail. Pour étayer ses arguments, le recourant produit plusieurs avis médicaux établis en juin 2009.
4. 4.1 D'après l'art. 99 al. 1 LTF, aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente.
Il s'ensuit que les pièces médicales datées du mois de juin 2009 ne sont pas recevables devant le Tribunal fédéral, car elles ont été établies postérieurement au prononcé du jugement attaqué et ne ressortent pas de celui-ci.
4.2 Les premiers juges ont constaté que la problématique d'apnée du sommeil ne générait aucun handicap qui ne fût déjà pris en compte par l'incapacité de travail de 30 % attestée sur le plan psychique. A cet égard, les juges cantonaux ont également constaté une évolution psychique positive, ce qui les a conduits à admettre l'existence d'un motif de révision.
Le recourant n'expose pas en quoi les constatations de fait du tribunal cantonal relatives à son état de santé et à la modification de celui-ci, de même qu'à l'étendue de sa capacité de travail, auraient été établies de façon manifestement inexacte ou en violation du droit au sens de l'art. 95 LTF, ainsi que cela lui incombe en vertu de l'art. 97 al. 1 LTF. Singulièrement, ses critiques ne remettent pas en cause la valeur probante des rapports d'expertise de la Clinique X._, aussi bien dans la mesure où ils concernent la problématique de l'apnée du sommeil (qui avait été abordée initialement le 29 juillet 2005, puis en procédure de révision les 5 mai 2008 et 27 octobre 2008) que l'amélioration de l'état de santé psychique (rapport du 5 mai 2008, p. 17). Le Tribunal fédéral est donc lié par les constats de fait du jugement attaqué.
4.3 Quant au degré d'invalidité de 30 %, il n'a rien de critiquable et aboutit à la suppression de la rente.
5. Le recourant, qui succombe, supportera les frais de la procédure (art. 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
2. Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge du recourant.
3. Le présent arrêt est communiqué aux parties, au Tribunal administratif du canton de Berne, Cour des affaires de langue française, et à l'Office fédéral des assurances sociales.
Lucerne, le 2 février 2010
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
Le Président: Le Greffier:
Meyer Berthoud