dimanche 21 novembre 2010

موسم حج 2010 و"معجزة إلهية" جديدة

موسم حج 2010 و"معجزة إلهية" جديدة 


قبل ساعات من الوقوف بصعيد عرفة وفيما اعتبر "معجزة" موسم حج 2010 ، فوجيء الجميع باستعادة أحد الحجاج حاستي السمع والنطق بعد 20 عاما من فقدهما .
ووفقا لوسائل الإعلام السعودية ، فإن على عبد الرحمن شريف "42 عاما" من الصومال كان وصل إلى مكة المكرمة لأداء مناسك الحج وبعد أن أدى الطواف وشرب من ماء زمزم أصبح قادرا على السمع والنطق .
ومن جانبه ، روى الحاج على تفاصيل "المعجزة" التي حدثت معه قائلا لصحيفة "الوطن" السعودية الصادرة الأحد الموافق 14 نوفمبر إنه قبل عشرين عاما وحينما كان يعمل موظفا بإدارة المحاسبة ونتيجة للأوضاع المضطربة في الصومال أصيب بقذيفة أفقدته السمع والنطق وأصبح غير قادر على الكلام وسماع أصوات الآخرين واضطر وأسرته إلى الانتقال لبريطانيا للعيش بها وتم عرضه على عدد كبير من الأطباء المتخصصين الذين قاموا بالكشف عليه وفشلوا في إيجاد العلاج المناسب له وأصبحت لغة الإشارة هي الوسيلة الوحيدة لتعامله مع الآخرين.
وأضاف أنه أمام أوضاع الصومال المتردية قرر العيش في بريطانيا مع زوجته ورزق بأربعة أبناء "ولدين وبنتين" وقد تعاطفت الجهات المعنية في بريطانيا معه وزودته ببطاقة تشير إلى أنه أصم وأبكم.
واستطرد الحاج على قائلا :" قررت أداء مناسك الحاج هذا العام وفور وصولي مكة المكرمة قمت بالطواف والسعي وشربت من ماء زمزم وفجأة وجدت نفسي قادرا على السمع والنطق حيث سمعت صوت مؤذن المسجد الحرام يرفع آذان الفجر فسارعت إلى إخبار من معي من المرافقين في بعثة الحج والذين بدت عليهم جميعا علامات التعجب والدهشة".
ومن جهته ، أكد مدير البعثة الحاج عبد الصمد محمد أنه فوجيء بالحاج شريف يتكلم بعد أن كان معروف عنه أنه أبكم أصم ، مشيرا إلى أنه طيلة الرحلة من بريطانيا إلى جدة كان شريف يكتب ما يريد ويقوم هو بنقل ذلك للمضيفات .




وأضاف الحاج عبد الصمد أنهم لم يصدقوا استعادة الحاج علي النطق والسمع حتى طلبوا منه أن يتحدث إليهم أكثر من مرة ثم تم اصطحابه إلى مستشفى أجياد للطواريء حيث تم الكشف عليه هناك من قبل الأطباء ووجدوا أنه سليم النطق والسمع.
واللافت للانتباه أن "المعجزة" السابقة لم تكن الأولى من نوعها ، ففي مواسم حج سابقة فوجيء ضيوف الرحمن بسحابة على شكل "كلمة الله" ، كما أنه في موسم حج 2005 وتحديدا في يوم عرفة , رأى كثير من الحجاج في كبد السماء قبيل الغروب بلون أبيض كلمة " لا إله إلا الله محمد رسول الله" .
ويبقى الأمر الأهم وهو أن بئر زمزم ليست فقط معجزة في انفجارها من تحت قدمي طفل رضيع " النبي اسماعيل عليه السلام " بل تعددت أيضا أوجه إعجازها فهي متدفقة بالماء منذ ذلك اليوم لم يتوقف عطاؤها رغم مرور مئات القرون بما فيها من جفاف وسنين عجاف وتقلبات مناخية ، هذا بالإضافة إلى أن ماء زمزم أصبح يأتي إلى الناس في بلدانهم بعد أن كانوا يأتون إليه في منبعه ، حيث أنه من خلال آلاف الحجاج والمعتمرين وصل الماء المبارك إلى الدنيا كلها متجاوزاً الحدود والعقبات.
وبجانب ما سبق ، فإن "معجزة" الحاج علي جاءت لتضع حدا نهائيا للمزاعم التي روجها البعض مؤخرا حول تلوث ماء زمزم .
وكانت السلطات البريطانية حذرت رعاياها قبل شهور من استخدام ماء زمزم أو نقله إلى بريطانيا بزعم احتوائه علي مواد تؤثر على صحة الإنسان ، إلا أن وزير الحج السعودي الدكتور فؤاد الفارسي نفى على الفور ما أثير عن تلوث ماء زمزم المخصص للتوزيع على ضيوف بيت الله الحرام في مكة المكرمة واصفا ما يثار عن ماء زمزم بأنه مجرد "تلويث إعلامي" .
وأفاد الفارسي حينها أيضا بأنه سيتم هذا العام توزيع عبوات بأشكال وأحجام جديدة لماء زمزم وهي عبوة بحجم 330 مل أثناء القدوم وعبوة لتر ونصف اللتر أثناء المغادرة والعبوة الثالثة بحجم 20 لتراً ، وأشار إلى أنه سيتم توزيع تلك العبوات في مواقع سكن الحجاج بمكة المكرمة، مضيفاً أن عددها الإجمالي خلال كامل موسم الحج سيبلغ نحو مليون ونصف المليون عبوة.
واختتم قائلا إن جميع الجهات المعنية علي أتم الاستعداد لخدمة ضيوف الرحمن الذين من المتوقع أن يصل عددهم هذا العام إلي مليون و700 ألف حاج خصص لهم قرابة 20 ألف أتوبيس .
"سقيا زمزم"

وسرعان ما كشف وزير المياه والكهرباء السعودي المهندس عبد الله بن عبد الرحمن الحصين عن قيام الملك عبد الله بن عبد العزيز يوم الجمعة الموافق 3 سبتمبر بتدشين مشروع "سقيا زمزم" في منطقة كدي بمكة المكرمة بسعة خمسة ملايين لتر يوميا وبتكلفة 700 مليون ريال " 186 مليون دولار تقريبا".
ووفقا لتصريحات أدلى بها الحصين يوم الخميس الموافق 2 سبتمبر ، فإن العاهل السعودي قد وجه بإنشاء مشروع يحمل اسم الملك عبد الله بن عبد العزيز لـ "سقيا زمزم" يهدف أولا لضمان تنقية مياه زمزم بأحدث الطرق العالمية وثانيا لتعبئته وتوزيعه آليا ، موضحا أن تكلفة المشروع بلغت 700 مليون ريال .
وأشار الحصين أيضا إلى أن الطاقة المركبة لمحطة التصفية تبلغ خمسة ملايين لتر يوميا عبر خطي تصفية ، كل خط يتكون من مجموعة من الفلاتر الخاصة بتصفية المياه ووحدة تعقيم في نهاية كل خط وسيخزن 10 ملايين لتر كحد أقصى من المياه المنتجة في خزان .
وأضاف أن المياه ستضخ بواسطة مضخات المياه المنتجة وعددها أربع إلى الحرم المكي الشريف عبر خط ناقل قطره 200 ملم من الستانلس ستيل أنشئ حديثا مع المشروع ويوجه قسم من إنتاج محطة التصفية وقدره مليونا لتر يوما كحد أقصى أي ما يعادل 200 ألف عبوة يوميا إلى مصنع التعبئة مباشرة ليعبأ في عبوات بسعة 10 لترات.
واختتم الحصين قائلا :" تبلغ المساحة الكلية للمصنع 13405 أمتار مربعة ويعمل بنظام سكادا الذي يمكن من التحكم والمراقبة لمراحل المشروع كافة ابتداء من ضخ المياه من البئر إلى آخر مراحل التعبئة".
والخلاصة أن السعودية لا تدخر جهدا فيما يتعلق بتوفير كافة أسباب الراحة والطمأنينة لضيوف بيت الله الحرام

mardi 16 novembre 2010

le malleur doc pour parter en java

le malleur doc pour parter en java


java -

analyzer g

lundi 15 novembre 2010

imad hosting now get the best of the best hostings

this hosting is free , and professional ,


without any ads or banners, just wonderfull hosting


you can earn money by referrrales , tha means you can get paid hosting withe us


don't forget it's for freeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee, only on


=>>>>>> www.imadh.0lx.net

imad hosting

imad howting is free hosting ,all you need just sinup and you'll have your space ,
you can install website builler for free , and buil your website ,


in 2 min you ll have your own website with professional hosting just for freeeeeeeeeeeeee


so don't spending more time and sign up nooooooooooooooooooow


www.imadh.0lx.net

DonkeyMails.com: No Minimum Payout



Members: Receive only the Advertising that Interests You!

 FREE Membership
 No minimum PerfectMoney and LibertyReserve Payout! 
 $0.10 Routepay Payout
 Low $1 , Paypal and Alertpay and $2.50 Solidtrustpay Payout
 Manual Surf with Cash and Credit prizes (win up to $25 Cash!)
 Earn extra money playing games
 High Rewarding USA/Search Country Signup Offers!
 Earn Cash Reading Our Daily eMails
 Get Paid for Clicking on ads
 Get Paid for sign-ups more then $250 to earn + Daily New offers!
 Complete tasks with the toolbar and earn money
 Payouts will be made each 2 weeks!
 Upgrade starting at only $7.50
 Get Paid To Promote $0.50 per 1,000 Credits!



5 Referral levels of commission under you.
Level 1 - 10%
Level 2 - 5%
Level 3 - 3%
Level 4 - 2%
Level 5 - 1%


 Only 10% activity required for Referral earnings!



 No minimum LibertyReserve Payout! 

vendredi 12 novembre 2010

How to Set SMART Financial Goals

How to Set SMART Financial Goals

There is only one thing worse than not setting financial goals–setting ineffective financial goals. A perfect example of a worthless goal is, “I want to achieve financial freedom.” While it may sound good, we don’t know what financial freedom is, so how will we know when we have arrived? A slightly better goal is, “I want to be debt free.” But this goal also has shortcomings. After all, we will all be debt free eventually (when we are pushing up daisies), but that’s probably not what we have in mind.
Setting workable, practical effective financial goals is really quite easy. They just need to be SMART. A financial goal, or any goal for that matter, should be Specific,Measurable, Attainable, Realistic, and Time bound.

Specific

Imagine if the goal of football was to get the pigskin down to the other end of the field. We’d be arguing over what the other end of the field means. Isn’t the 2 yard line the other end of the field? Of course, the goal in football is to get the ball into the end zone. The official language of a touchdown is even more specific: “When any part of the ball, legally in possession of a player inbounds, breaks the plane of the opponent’s goal line, provided it is not a touchback.”
We need the same specificity when we set financial goals. Here are some good examples of specific goals:
  • I want to be debt free.
  • I want to make $100,000 from my blog.
  • I want to save $2,500,000 for retirement.
There is more left to do with these goals, so keep reading.

Measurable

For a goal to be effective, it must be measurable. A goal to “make a lot of money” is not helpful because you can’t measure “a lot.” One of my goals for this blog in 2008 was to make $20,000. I set that goal, in part, because my wife and I decided to give 50% to charity, and we were hoping to give $10,000. This goal was easily measurable, and I’m happy to report that this year we ended up giving about $15,000 to charity from this blog, so we exceeded our goal! More on that later this month.
One final note on measurable goals. There is a saying in the consulting business that not everything that can be measured is important, and not everything that is important can be measured. As true as this is, when it comes to goals, they are either measurable or they aren’t really goals at all.

Attainable

Setting attainable goals can be tricky. You certainly want to push yourself and strive to achieve as much as you can. But setting goals that even under the best of circumstances are not attainable will just lead to discouragement. I set my 2008 goal of making $20,000 from this blog this past January. At the time, I knew that I had made just over $800 from the blog in January, so a goal of $20,000 for the year was a stretch, but not ridiculous. I pushed myself, but kept the goal attainable.
This aspect of goal setting reminds me of Casey Kasem, who always said at the end of his popular “America’s Top 40″ show, “keep your feet on the ground, and keep reaching for the stars.”

Realistic

Setting realistic goals involves the methods we intend to use to achieve our goals. For example, a goal of having $2,500,000 at retirement by saving $5 a month under my mattress is not a realistic goal. Making $20,000 in 2008 from this blog by spending 1 hour a month blogging is also not a realistic goal (trust me!). An example of a realistic goal might be to pay off all credit card debt in 2009 by paying an extra $500 per month.

Time bound

This last element of SMART financial goals is really important. Effective goals have time limits, like the shot clock in basketball. Of course, not all goals are short-term. I would define a short-term goal as less than one year, an intermediate-term goal as one to five years, and a long-term goal as greater than five years. We need all of them.
Long-term goals generally involve retirement, saving for a child’s education, paying off the mortgage, and so on. An example of an intermediate-term goal might be to save $15,000 in four years to buy a new car. And short-term goals are even smaller stepping stones to our long range goals.
The lack of a time element is a problem with the three example goals I mentioned above. Let’s rewrite these goals to add a shot clock to each of them:
  • I want to pay off all of my credit card debt by December 31, 2009
  • I want to make $100,000 from my blog in 2009
  • I want to save $2,500,000 for retirement by time I’m 65

Homework

Yes, I’m giving you homework. As we near the end of the year, it’s a great time to be thinking about financial goals. I started setting next year’s goals in October. I have goals for this blog and my personal finances, which are now intertwined. I’ll be writing more about financial goals at the end of the month, but now is the time to set your financial goals for 2009. Just make sure they are SMART.

La vérité sur la guerre du Sahara

La vérité sur la guerre du Sahara



Archives, cartes, recoupements, multiples entretiens avec des officiers d’active… Karim Boukhari et Amale Samie ont creusé le plus loin possible pour reconstituer la trame d’une guerre qu’on connaît mal. Une enquête exclusive

Que sait-on vraiment de cette guerre ? Pendant 30 ans, la lourde chape hassanienne, puis le réflexe de peur, ont confiné les Marocains dans l’ignorance de ce qui a été, pourtant, une véritable épopée militaire. 5 phases principales l’ont marquée : l’effort de conquête et ses préparatifs (1973-1976), le harcèlement de l’ennemi et les défaites successives
(1976-1980), la pénible érection du mur de protection et le renversement graduel de la situation (1980-1987), avant le statu quo final, puis le cessez-le-feu (1991). Chronique d’une guerre méconnue.
1973 - 1976 occupation du terrain
Dès 1973, le Maroc a compris son erreur initiale d’avoir sous-estimé le Polisario. "Le ralliement immédiat du Polisario à l’Algérie et, derrière, son adossement financier et militaire à la Libye et à pratiquement tout le bloc de l’Est, a été vite digéré, nous expliquent des officiers à la retraite. Le Maroc n’a été ni bien conseillé, ni bien préparé à livrer bataille. Mais, il a compris que l’Espagne allait quitter le Sahara et que le reste allait se réduire à une course contre la montre". En 1974, Hassan II saisit la Cour internationale de justice de La Haye au sujet du statut du Sahara. En parallèle, il fait appel à son homme de confiance du moment, Ahmed Dlimi, qui réendosse sa tunique de militaire. À partir de 1974, Dlimi et ses hommes tenteront des incursions-éclair dans le Sahara contrôlé par l’Espagne. Quand, en 1975, la CIJ de La Haye et l’ONU rendent leur copie (en gros, oui à une auto-détermination pour le Sahara), Hassan II déduit que le territoire reviendrait à celui qui l’occuperait en premier, aussitôt que les troupes espagnoles auraient décampées. D’où l’idée d’une Marche verte vers Laâyoune doublée, à l’est, d’une pénétration militaire. L’Espagne de Franco a tout compris et a choisi, sur la fin, de laisser faire. "Pourquoi Franco aurait-il fait la guerre au Maroc puisque l’Algérie, via le Polisario, allait immanquablement le faire ?, nous explique un gradé marocain. L’Espagne voulait bien retirer ses troupes du moment qu’elle s’était assurée en partie le contrôle des phosphates et de la pêche dans la région et de la sauvegarde des îles Canaries en regard du territoire disputé". C’est en 1975 que le Maroc effectue, pour de bon, des missions de reconnaissance aérienne dans le ciel du Sahara. Dlimi et ses hommes préparent déjà un ratissage du terrain, loin de la côte atlantique. Tout est prêt pour concrétiser le coup de poker tenté par Hassan II : une Marche verte vers Laâyoune. Un véritable coup de génie. Ou comment occuper symboliquement la "porte" du Sahara, mettant les voisins et la communauté internationale devant le fait accompli, tout en s’assurant le consensus de la classe politique et en tenant éloignée une armée qui restait sur deux tentatives successives de coups d’Etat, en 1971 et 1972. Le 6 novembre 1975, donc, 350.000 civils, accourus des quatre coins du royaume, marchent vers Laâyoune, en partant de Tan Tan, escortés par des avions-éclaireurs. Les "marcheurs" ne vont pas jusqu’à Laâyoune, mais ils ont le temps de franchir la ligne de démarcation symbolique via le poste frontière de Tah. Le Maroc a ouvert la porte et mis les pieds dans l’ancien Sahara espagnol ! Pratiquement dans le même temps, Dlimi entame l’opération Ouhoud, du nom d’une célèbre guerre sainte de la première ère islamique. Militairement, la surprise est totale. Pendant le déroulement de la Marche verte vers Laâyoune, Dlimi pénétrait le Sahara en douce, à plus de 100 km à l’est, en "raflant" au passage les postes de Farsia, Jdiriya, Hawza et, plus tard, Mahbes, finissant de nettoyer tout le secteur de Smara. Le tout sans opposition notoire. L’occupation du terrain est en marche et Franco, de son lit de mort, a donné à ses troupes l’ordre de ne pas tirer. Le 14 novembre, le Maroc signe les accords de Madrid dont la Mauritanie, qui hérite du contrôle du tiers sud du Sahara, est la troisième partie prenante. Les troupes de Mokhtar Ould Daddah s’emparent de Lagouira avant de marcher, plus tard, sur Dakhla. L’Algérie dénonce, le Polisario regroupe toutes ses troupes du côté de Tindouf, alors que sa direction multiplie les va-et-vient jusqu’à Alger.
Début 1976, le décor est bien planté : la Mauritanie contrôle théoriquement le tiers-sud du Sahara et le Maroc les deux tiers nord. L’Algérie se prépare et prépare le Polisario à la guerre. Alors que la communauté internationale se relève encore du choc, tout est prêt pour une guerre qui sera, beaucoup plus, une course effrénée pour occuper les villes, plutôt que d’investir entièrement un territoire à la configuration d’un no man’s land difficile à sécuriser. Pour Dlimi, qui commande les troupes marocaines, la stratégie consiste à occuper le terrain par paliers, horizontalement, en s’enfonçant graduellement vers le bas, via de longues colonnes blindées. En face, l’Algérie arme le Polisario et l’envoie récupérer les positions prises par les Marocains. La guerre du Sahara à proprement parler peut commencer.
1976 - 1980 : La grande désillusion
L’euphorie née de la pénétration en douce des unités de Dlimi dans le Sahara n’a pas duré longtemps. Dès janvier 1976, une première grande bataille a lieu autour d’Amgala, entre des troupes marocaines et algériennes. Les Marocains gagnent la première manche, laissant 200 victimes algériennes sur le sable. La victoire est totale et le Maroc, sur ordre de Hassan II, choisit de "se contenter" de la prise de 100 prisonniers algériens. Le calcul du monarque est simple : le Maroc a gagné la bataille, mais il n’a pas envie de déclencher une guerre contre l’Algérie. D’où le choix de libérer une bonne partie des captifs. Le calcul, en tout cas, sera juste, puisque cette bataille maroco-algérienne, plus connue comme Amgala 1, restera comme la seule confrontation réelle entre les troupes des deux pays. Quelques semaines plus tard, le Maroc perd Amgala suite à la riposte polisaro-algérienne. Et à partir de là, les deux (ou trois) adversaires se livreront à un interminable jeu du chat et de la souris. Le Maroc occupe déjà plusieurs villes. Pour conforter ses positions, il se heurte au problème du ravitaillement. Le Polisario sort alors ses griffes. Grâce à sa très grande mobilité, il déploie sa technique de la guérilla en multipliant les attaques surprise de toutes parts. "C’est, comme nous l’explique cet officier, une guerre sans front, où les embuscades sont monnaie courante". Les Marocains, à leur grande surprise, découvrent que le Polisario, comme cela nous a été confirmé par plusieurs sources, est "mieux équipé, mieux préparé" à une guerre qu’il pressent longue. Écoutons la confidence de ce pilote de chasse marocain : "On effectuait nos missions aériennes à l’œil nu. Pour beaucoup d’entre nous, on recevait notre formation sur le tas. J’ai tiré, faute de discernement, sur des positions marocaines… En face, le Polisario n’avait pas d’aviation, mais avançait dans des chars ultrasophistiqués pour l’époque, équipés d'infra-rouge, qui leur permettaient d’attaquer et de cibler juste même la nuit". En plus, et tout au long de cette année 1976, les unités du Polisario s’infiltraient dans le massif de l'Ouarkziz qui surplombe la gara de Tindouf. Occupé à libérer les villes du Sahara, le Maroc n’a pas cru l’Algérie capable de donner le feu vert au Polisario pour s’attaquer aux parties non contestées du Maroc. Le Polisario a fini par faire de cette montagne marocaine un véritable bunker et une base de lancement des attaques contre les positions marocaines.
L’année 76 verra aussi la mort d’El Ouali, le fondateur du Polisario, en plein champ de bataille sur le front mauritanien. Il est remplacé, à la surprise générale, par Mohamed Abdelaziz, voulu et imposé par les Algériens. Sur les champs de bataille, le Maroc perd considérablement du terrain. L’aviation marocaine multiplie les missions. Au point qu’on l’accuse d’avoir eu recours au napalm lors d’une de ces missions… Le Polisario multiplie les attaques, notamment à partir de 1978, contre les positions marocaines. En parallèle, l’Algérie déstabilise la Mauritanie politiquement, et le Polisario l’use militairement. L’été 1978, déjà, le président mauritanien Ould Daddah est renversé par Ould Haïdallah. L’année d’après, la Mauritanie se retire tout simplement du Sahara. La guerre, qui fait rage, devient celle du Maroc et de l’Algérie. Hassan II contre Boumediène. Deux modèles de gouvernance diamétralement opposés.
Avec le retrait de Nouakchott, le Maroc se retrouve avec un territoire de près de 270 000 km2 à sécuriser. Une tâche d’autant plus difficile que le Polisario, désormais, multiplie les attaques de l’intérieur même du territoire mauritanien, en partant des villes du Nord, dont Zouerate. Ou Bir Moghrein. En août 1979, et à l’évacuation de Dakhla et tout l’Oued Eddahab par la Mauritanie, les forces marocaines investissent la ville, après une course contre la montre avec les unités du Polisario venant de Zouerate et de Bir Moghrein. Les Marocains arrivent plus vite que leurs adversaires ; le 11 août, ils sont à Dakhla. Le 14, ils commencent à sécuriser la province. Mais les lignes de l’armée marocaine s’étirent, le ravitaillement se perd en cours de route. Le Maroc recule et, en dehors des grandes villes comme Boujdour et Dakhla, il se cantonne au Nord et à ses trois points stratégiques que sont Laâyoune, Boucraâ et Smara. Tout autour, le Polisario tisse un axe de défense "mobile" qui va jusqu’aux portes de Boujdour. En janvier 1979, par exemple, il pousse le luxe jusqu’à occuper, quelques heures durant Tan Tan, violant allègrement la souveraineté marocaine. La désillusion, qui durera jusqu’en 1980, est alors d’autant plus grande que, sur le plan diplomatique, le Polisario marque des points. Sans être un fiasco, la guerre du Sahara semble alors très mal engagée et un changement de stratégie, d’abord militaire, devient urgent.
1980 - 1987 : Le mur par lequel le salut arrive
En 1980, Dlimi, sur les conseils des experts du Mossad israélien, lance le chantier d’un mur de sable, qui tracera de nouvelles frontières à l’intérieur du Sahara. "L’idée, se souvient un officier, est de défendre les positions marocaines, les villes comme les immensités désertiques, et surtout de choisir désormais les champs de bataille". Dlimi s’appuie sur ses trois colonnes blindées, Ouhoud, Arak et Zellaqa, fortes de 20.000 hommes chacune, pour creuser des sillons à travers le Sahara. Août 1980, le premier mur est en construction, qui protège le triangle névralgique Boucraâ-Smara-Boujdour. Le Polisario, sentant venir le danger, intensifie les attaques et accumule les démonstrations de force (bateaux de pêche arraisonnés non loin de Boujdour) avant l’achèvement du premier mur en 1982. Une année auparavant, Hassan II avait surpris tout son monde, à commencer par la classe politique marocaine, en acceptant, sans doute pour répondre à la pression de la communauté internationale, l’idée d’un référendum. Politiquement, une brèche est ouverte. Et tout devient possible. Le Maroc reprend militairement du poil de la bête. Mais, politiquement, il a bel et bien concédé du terrain pour sa souveraineté. C’est alors que l’armée, à son tour, et au bout de près d’une décennie de combats, pour reprendre l’expression d’un témoin de cette guerre, "contre des ennemis souvent invisibles", donne des signes de fatigue. Que se passe-t-il au juste avant que Dlimi, un certain jour de janvier 83, trouve la mort dans un accident de voiture pour le moins irréel ? Nul ne le saura jamais, même si, des années plus tard, la CIA déclassera une partie de ses archives pour placer l’ancien commandant de la zone Sud parmi une longue liste d’assassinats politiques. L’assassinat de Dlimi changera, en tous cas, la donne au Sahara. Militairement, et surtout politiquement. Abdelaziz Bennani, voire Driss Benaïssa, Abrouk ou le colonel Britel qui dirigeront plus ou moins la manoeuvre à la suite de Dlimi, iront chercher leurs consignes auprès du roi. Hassan II décide, par exemple, que le "droit de suite" (possibilité de poursuivre les intrus en dehors du mur), auquel sont dédiées les brèches qui séparent le mur sera désormais astreint. "Le but, nous explique un officier à la retraite, est d’éviter de nouveaux affrontements directs avec l’armée algérienne en poursuivant l'assaillant loin du mur". Politiquement, Hassan II fait de Driss Basri son représentant personnel au Sahara, et bientôt son interlocuteur aussi bien auprès des Algériens que des émissaires de l’ONU. Le Sahara, qui continue d’être un champ de bataille, vaut au Maroc moins de morts et de prisonniers. Mais, diplomatiquement, le retard accusé par le royaume dès les années 70 par rapport au Polisario et à l’Algérie s’agrandit. En 1984, la RASD (République arabe sahraouie démocratique), proclamée dès 1976, est reconnue par l’OUA (Organisation de l'unité africaine). Le Maroc, trahi par ses amis africains, claque la porte de l’OUA et se ferme complètement. Il se reconcentre sur son effort de guerre et lance la construction d’un deuxième mur, toujours loin de Tindouf. Les escarmouches reprennent de plus belle, comme si chacun s’était mis d’accord, de part et d’autre, qu’aucune solution politique n’était envisageable avant la désignation d’un vainqueur et d’un vaincu à la guerre. En 1987, pourtant, le Maroc remporte une victoire morale : le 6e et dernier mur est achevé. Oued Eddahab est définitivement sécurisé, fermant ainsi le front mauritanien et ouvrant la voie, l’année d’après, au Plan de paix présenté par le S.G de l’ONU, Javier Perez De Cuellar.
1987 - 1991 : La fin d’une guerre inutile
L’année 1987 s’annonce sous de meilleurs auspices pour le Maroc. Il stabilise la situation. Le Polisario triomphant du début des années 80 s’essouffle graduellement. Il ne parvient plus à inquiéter Dakhla, complètement sécurisée. Le dernier mur, celui qui longe la frontière avec la Mauritanie, est enfin terminé. Il protège aussi Tichla et Aousserd dans l’est de la province d’Oued Eddahab. Mais les attaques rageuses ne cessent pas. En février, mars et novembre de cette année, le Polisario effectue raid sur raid le long du mur qui va maintenant de M’hamid El Ghizlane à Guergarat, à 55 km au nord de Lagouira, pour éprouver les défenses marocaines soumises à rude épreuve. Mais désormais, la pression va changer de camp. Le Polisario laisse trop de victimes pour une armée, déjà sans hiérarchie, dont l’effectif peut aller jusqu’à 30 et 40.000 hommes, selon les périodes. La Libye ne fournit plus d’armes depuis longtemps, les "guerilleros" ont pris de l’âge et comme nous le dira le journaliste tunisien Abdelaziz Dahmani (il prépare un ouvrage sur le sujet) : "La relève n’était pas à la hauteur. Finie la connaissance du terrain, la guerre avait l’âge des recrues". En fait, ces soldats formés en Union soviétique n’étaient pas destinés à la guérilla mais à une guerre plus conventionnelle. Toujours selon Abdelaziz Dahmani, c’est là qu’a résidé l’erreur qui sera fatale au Polisario en tant que force militaire. Les jeunes ne connaissaient le Sahara que par les cartes ou par les "excursions" à l’est des murs. C’est alors le commandant Ayoub Lahbib, dernier chef de guerre, qui fait l’essentiel de la pugnacité du Polisario.
Les opérations continuent tout de même. Le mur est solide mais pas infranchissable. Le Polisario utilise, par endroits, la technique des bombardements pour forcer le passage. Des incursions sont aussi signalées à travers l’une ou l’autre des cinq "brèches", qui séparent les six portions du mur. Défaillance des radars de surveillance ? Erreurs à mettre sur le compte de certaines négligences et défauts de transmission ? En août et en décembre1987, puis en janvier 1988, des accrochages acharnés se déroulent tout le long du mur. Ils feront près de 300 morts de chaque côté. Mais c’est désormais une guerre sans grande conviction et politiquement inutile même à celui qui l’entretient. Surtout que le Maroc et le Polisario avaient accepté le plan de paix de l’ONU, le 30 août 1988. Pour négocier en position de force, le Polisario essaie de faire le forcing, mais le 11 décembre il abat un avion américain par erreur. Durant cette même année, la situation politique est désastreuse pour les dirigeants du Front. Une révolte ouverte a explosé dans les camps de Tindouf. Une de ses conséquences sera le ralliement de 6 membres de la direction du Polisario, dont Omar Hadrami. Le Polisario tente toujours de s'adapter à des confrontations conventionnelles auxquelles le mur, désormais achevé, l’oblige. Ayoub opère par concentration de blindés. Les derniers combats significatifs auront lieu à Gueltat Zemmour, en octobre 1989, en janvier et en novembre 1990 où le Polisario laissera près de 100 morts sur le terrain. C’est à cette époque-là, selon Lahbib, rentré au Maroc depuis, que le Polisario apprend à "percer" le mur avant de faire demi-tour sous le feu de l'aviation marocaine. Il faudra attendre août 1991 pour que la guerre cesse définitivement. L’armée du Polisario se désagrège encore et ne compte plus, selon la majorité des observateurs, que 2000 à 6000 réguliers. Bizarrement, alors, quand le cessez-le-feu bilatéral est enfin proclamé le 6 septembre 1991, le Maroc est militairement au plus fort alors que le Polisario est au plus bas ! Mais continuer était plus inutile que jamais. Malgré quelques dernières escarmouches, la guerre du Sahara était bien finie.







Genèse du Polisario : "Le cabinet royal nous prenait de haut"
Le Polisario doit son existence au tandem des frères Mustapha Sayed : El Ouali et Bachir. Le premier suivait des études de médecine, le deuxième faisait son droit, tous les deux à l’université de Rabat. Très actifs dans la capitale du royaume, El Ouali et Sayed militent pour la décolonisation du Sahara, alors sous occupation espagnole. Au début des années 70, le rêve de décolonisation se transforme peu à peu en rêve d’indépendance. Les "Sahraouis" tapent à la porte des partis dont ils souhaitent la caution politique. Ils vont de l’UNFP où ils sont reçus par le duo Bouabid – Benjelloun, à l’Istiqlal où El Fassi – Douiri leur donnent la réplique. Les partis ne bronchent pas, jugeant le timing "mauvais pour soulever la question". En fait, ils n’osent pas, craignant un retour de bâton de la monarchie, avec laquelle les relations, déjà, sont au plus bas. Les Sahraouis n’abdiquent pas et vont jusqu’à solliciter Ahmed Balafrej au Cabinet royal. L’entrevue reste sans lendemain. Sans doute une question de standing, les conseillers du roi Hassan II voyant mal celui-ci accorder audience à des jeunots menés par un Che Guevara des sables. "On nous a pris de haut", diront les jeunes Sahraouis aux leurs, dont beaucoup n’ont jamais digéré que le Maroc de l’Indépendance n’ait pas "allongé" le pas jusqu’à récupérer les provinces du Sud. C’est la rupture. En 1973, El Ouali et son frère Bachir, auxquels s’ajouteront Mahfoud Ali Baïba, Mohamed Lamine Ould Bouhali, Brahim Ghali, Mohamed Lamine Ahmed, Omar Hadrami et Ayoub Lahbib, originaires pour la plupart de la puissante tribu des Rguibat, fondent officiellement le Polisario ou front de libération de Sakiat El Hamra et Ouad-Addahab (Rio de Oro pour les Espagnols). El Ouali regagne le Sud avec ses compagnons, dont une partie lorgne déjà sur Tindouf, ancienne bourgade marocaine rattachée à l’Algérie du temps de la colonisation française, définitivement abandonnée par Hassan II dans les suites de la guerre des Sables de 1963. Le Polisario, né d’une frustration marocaine, tombe dans les bras du voisin algérien qui y voit une aubaine pour s’ouvrir sur l’Atlantique. Ce qu’on appellera plus tard le conflit du Sahara occidental est né, pratiquement en même temps que le Polisario.






Défense : Et le mur fut
Dès 1979, l’idée d’un mur de défense s’impose comme une évidence pour les autorités marocaines. Construit en six étapes, s’étalant de 1980 à 1987, il comporte cinq "brèches" censées assurer le droit de suite pour les troupes marocaines. Des tranchées de plusieurs mètres sont creusées en plusieurs endroits en contrebas du mur, de façon à minimiser le risque d’une incursion adverse. Tout le long du mur, des unités de surveillance se relaient aux unités d’intervention, équipées de radars et protégées de barbelés. Chaque mur est censé sécuriser la zone qui le sépare de l’Atlantique. D’une longueur totale dépassant les 2500 km, le mur de défense est surveillé par plus de 90.000 hommes. Une bande de plusieurs centaines de mètres de champs de mines en interdit l’accès.






Armement : Petits arrangements entre amis
Le Front Polisario a été armé par la Libye dès 1973. Lors de la halte d’Atar, Kadhafi, en visite officielle en Mauritanie en 1972, demande abruptement au président Mokhtar Ould Daddah de l’aider à fonder un mouvement de libération du Sahara. Il ne fera pas impression sur le président, il contactera donc des Sahraouis encore sous occupation et leur offrira des armes légères qui serviront à attaquer les premières garnisons espagnoles. L’Algérie commencera à équiper le Front dès 1975, mais c’est seulement en 1976, au plus fort de la guerre du Sahara, que cet apport deviendra massif.
Le Polisario sera très vite muni de missiles sol-air Sam 6 et Sam 7 et de chars soviétiques. D’abord des T 54 puis 55 et T 74. C’est l’une des premières grosses surprises de cette guerre, qui en réservera d’autres. Mais les armes viennent aussi des pays de l’Est. C’est la Yougoslavie et la Corée du Nord qui fourniront au Polisario des armes qu’il utilisera dès mars 1981 pour abattre un transporteur de troupes C 130, deux bombardiers F 5 et un hélicoptère. L’Algérie fournit aussi des canons de 122 mm et tout le carburant nécessaire. Les Libyens livrent des transporteurs de troupes, des missiles et des roquettes. Tout cela dépassait de loin les prévisions des Marocains. "(…) Sur le plan militaire, nous allons encore avoir des ennuis", disait Hassan II en 1984, alors que le Maroc commençait à se ressaisir.
Le royaume, quant à lui, a été équipé d’avions F1 américains et de mirages français. Pour les chars, il était aussi équipé de T 54 et T 55 soviétiques et d’AMX 30 français. Parmi les autres fournisseurs du royaume, on pouvait retrouver la Roumanie et, surtout, l’Afrique du Sud. Pour les effectifs, le Polisario comptait sur un contingent régulier de 15.000 hommes, pouvant grimper par périodes jusqu’à 40.000. Le Maroc, en face, avait mobilisé jusqu’à 120.000 hommes.
Le Maroc, qui possédait une armée conventionnelle, surtout mal préparée et un matériel trop lourd pour le terrain, comptait d’abord sur son aviation. Le Polisario, lui, comptait sur sa mobilité et sa connaissance du terrain. Il est passé, dans une deuxième étape (celle du mur), à une tactique plus conventionnelle, basée sur des percées avec des chars lourds. La suite démontrera que le calcul n’était pas forcément bon.






1991-2004 : Depuis le cessez-le-feu…
En août 1988, déjà, le Maroc et le Polisario avaient approuvé le plan de règlement de l’ONU, mais sans doute en espérant, chacun, forcer la décision par les armes. En juin 1990, et malgré l’adoption du plan, chacun poursuit son propre plan : durer et porter la guerre sur le plan politique pour le Polisario, courir derrière la légitimité internationale et rattraper près de deux décennies d’erreurs politiques et d’absences diplomatiques pour le Maroc. Le Plan, outre les dispositions référendaires, crée la Minurso en 1991 (Mission des Nations unies pour le Sahara Occidental) qui, avec ses 1000 hommes, veillera à l’identification des votants et au respect du cessez-le-feu. C’est à cette époque, déjà, qu’apparaîtront les premières difficultés pour la définition du corps électoral. Pendant ce temps, la communauté internationale tente de réunir, pour de bon, les deux parties autour d’une table de négociation. Mais les résultats restent frustrants. C’est le 16 septembre 1997 que seront signés les accords de Houston sur la reprise du processus d’identification et la mise en œuvre du plan de règlement. Mais le contenu de ces accords et particulièrement le dernier point qui stipule que "les tribus contestées se présenteront individuellement devant la commission d’identification" provoque la colère des tribus Tekna, essentiellement dans le nord du Sahara. Blocage général et retour à la case départ.
En septembre 2000, le Maroc propose pour la première fois une solution négociée dans le cadre de la souveraineté marocaine. Le Polisario s’en tient au référendum. Nouveau blocage. C’est James Baker qui revient à la charge, cette fois en mai 2001, avec un projet d’accord-cadre qui accorde les pouvoirs locaux de gestion aux Sahraouis, le Maroc gardant tous les attributs et prérogatives de la souveraineté, sécurité, diplomatie, finances. Le Polisario refuse. Le 19 février 2002, c’est le tour du S.G de l’ONU, Kofi Annan, de proposer quatre options dont l’une est inédite : la division du territoire entre Marocains et Sahraouis. L’Algérie accepte, le Maroc refuse, imité en cela par le Polisario. Pas de troisième option. Les résolutions se multiplient et la Minurso prend racine au Sahara quand, le 31 juillet 2003, le conseil de sécurité adopte la résolution 1495 qui remet les compteurs à zéro : un référendum d'autodétermination après 4 ou 5 années de transition. L'éventualité d'une indépendance est clairement évoquée. Le Maroc formule une contre-proposition qui pourrait ouvrir la voie à un État fédéral sur le modèle espagnol. Ce qui passerait forcément par une révision constitutionnelle. Vous avez dit surprise ? Réponse de l'ONU le 30 avril prochain.

Maroc Algérie : la guerre inévitable ?

 Maroc Algérie : la guerre inévitable ?

 
image
Depuis une année de grandes manœuvres militaires des FAR (Forces Armées Royale du Maroc) ont eu lieu au Maroc principalement dans le sud du royaume chérifien au Sahara, les réunions aussi des grands stratèges des FAR se succèdent. Le mur de défense marocain ou les FAR font leurs manœuvres et un mur de plus de 3 mètres de haut et de 2.720 km de long ,érigé par le Maroc de 1980 a 1987 pour stopper les incursions des combattants sahraouis du front Polisario , le fameux mur de défense marocain a été édifié par les marocains aider par les renseignement de la CIA qui ont fournie au Maroc leur allié traditionnel les photos aérienne des reliefs et en général la situation géographique du Sahara fournie par des satellites américains de l'époque (1979). Les manœuvres militaires des FAR se succèdent de plus en plus a Haouza Aouserd ,Mahbas .... Des manœuvres a grande échelle (terre air mer) qui inquiètent la Mauritanie compte tenu de la politique un peu pro sahraoui du nouveau gouvernement mauritanien , et inquiéte aussi le Polisario principal ennemie du Maroc mais aussi l'Algérie le pays responsable de tous les maux et les problèmes du Maghreb,déja les journaux algériens ces derniers temps s'alarment et certains paniquent en tirant la sonnette d'alarme et parlent de guerre a grande échelle , la semaine dernière les manœuvres ont commencé à Aouserd à l'extrême sud est du Sahara alors que quatre grandes frégates ont accosté a Dakhla. Avant ces manœuvres il ya eu des manœuvres à Mahbas, Guéltat-Zemmour... ), des réunions ont été tenues la dernière en date à peu prés d'une semaine à Dakhla à laquelle beaucoup de généraux ont pris part, parmi eux les généraux: Bennani (4étoiles),Hosni Bensliman (4 étoiles), Boutaleb (3 étoiles), Amer (3 étoiles), respectivement commandant de la zone sud (Sahara) et aussi inspecteur général des FAR terre-air-mer, commandant de la Gendarmerie Royale, inspecteur de l'armée de l'air, inspecteur de l'armée de terre.
A noter que le Maroc a signé d'importants contrats d'armement ces derniers temps, il s'agit de 1.200 véhicules blindés d'Espagne pour 600 millions $ ,1 frégate "Fremm" multi-missions et qui est un gros navire, de 137 mètres de long et 5.500 tonnes il est anti-aérien anti-sous marins avec porte hélico et artillerie légère.... pour 500 millions $, 3 croiseurs acheté de la Hollande multi-missions avec aussi comme options anti-aérien anti-sous marins, avec porte hélico et artillerie légère.... Qui font 105 mètres de long chacun, sans compter le fameux contrat avec les Etats Unis pour l'achat de 24 avions bombardiers F-16 C/D Block 52 neuf pour 2 milliards d'euros, il y'a aussi des contrats avec la Russie pour l'achat de Tunguska 2s6M (porte missiles anti-aérienne).
Cela reste une réponse si ce n'est un avertissement a l'égard de l'Algérie qui a conclu elle aussi d'importants contrats d'achats d'armements avec la Russie pour 7 milliards de $,Cela est d'autant plus inquiétant que le problème du Sahara n'est toujours pas réglé.
Le Maroc a présenté un plan d'autonomie jugé par la France de crédible ,de base de discussion, jugé par les Etats Unis comme crédible, et applaudi par la communauté international sauf l'Algérie qui reste attachée aux idées de révolution, décolonisation.... des années 60,et qui dépense des milliards dans l'armement au lieu de les investir dans l'économie et dont le peuple algérien en a vraiment besoin.
Le bruit de botte dans les frontières algéro-marocaine n'augure rien de bon, s'il devrait y avoir un conflit qui opposerait le Maroc et le Polisario il faut s'attendre à une confrontation Maroc Algérie car il semble que le Maroc ne tolère plus que les combattants sahraouis attaquent le Maroc à partir de l'Algérie sans qu'il fasse usage de son droit de poursuite c'est a dire dans les terres algérienne, ce que bien sûr l'Algérie n'acceptera jamais. Donc une guerre éclatera. Dernièrement le président Bouteflika a affirmé qu'il n'y aura jamais une guerre avec "le Maroc frère" mais une attaque du Polisario contre le Maroc sera sûrement la cause d'une guerre inter-maghrébine .Pour le moment les Etats Unis calment le jeux, mais jusqu'a quand ?
Publié dans Maroc Actualités (14 mars 2008)

Create a Timer object

Create a Timer object

JDK 1.3 (or better) provides new classes called java.util.Timer and java.util.TimerTask.
import java.util.Timer;
import java.util.TimerTask;

public class ToDo  {
  Timer timer;

  public ToDo ( int seconds )   {
    timer = new Timer (  ) ;
    timer.schedule ( new ToDoTask (  ) , seconds*1000 ) ;
  }


  class ToDoTask extends TimerTask  {
    public void run (  )   {
      System.out.println ( "OK, It's time to do something!" ) ;
      timer.cancel (  ) ; //Terminate the thread
    }
  }


  public static void main ( String args [  ]  )   {
    System.out.println ( "Schedule something to do in 5 seconds." ) ;
    new ToDo ( 5 ) ;
    System.out.println ( "Waiting." ) ;
  }
}
Swing also provide a Timer class. A Timer object will send an ActionEvent to the registered ActionListener.
import javax.swing.Timer;
import java.awt.event.*;
import java.util.*;

public class TimerDemo implements ActionListener {
  Timer t = new Timer(1000,this);

  TimerDemo() {
    t.start();
    }

  public static void main(String args[]) {
    TimerDemo td = new TimerDemo();
    // create a dummy frame to keep the JVM running
    //  (for demonstation purpose)
    java.awt.Frame dummy = new java.awt.Frame();
    dummy.setVisible(true);
    }

  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == t) {
      System.out.println 
        ("\007Being ticked " + Calendar.getInstance().getTime());
      }
    }
}

How to Use Swing Timers

How to Use Swing Timers
A Swing timer (an instance of javax.swing.Timer) fires one or more action events after a specified delay. Don't confuse Swing timers with the general-purpose timer facility that was added to the java.util package in release 1.3. This page describes only Swing timers.In general, we recommend using Swing timers rather than general-purpose timers for GUI-related tasks because Swing timers all share the same, pre-existing timer thread and the GUI-related task automatically executes on the event-dispatch thread. However, you might use a general-purpose timer if you don't plan on touching the GUI from the timer, or need to perform lengthy processing.
You can use Swing timers in two ways:
  • To perform a task once, after a delay.
    For example, the tool tip manager uses Swing timers to determine when to show a tool tip and when to hide it.
  • To perform a task repeatedly.
    For example, you might perform animation or update a component that displays progress toward a goal.
Swing timers are very easy to use. When you create the timer, you specify an action listener to be notified when the timer "goes off". TheactionPerformed method in this listener should contain the code for whatever task you need to be performed. When you create the timer, you also specify the number of milliseconds between timer firings. If you want the timer to go off only once, you can invoke setRepeats(false) on the timer. To start the timer, call its start method. To suspend it, call stop.
Note that the Swing timer's task is performed in the event dispatch thread. This means that the task can safely manipulate components, but it also means that the task should execute quickly. If the task might take a while to execute, then consider using a SwingWorker instead of or in addition to the timer. See Concurrency in Swing for instructions about using the SwingWorker class and information on using Swing components in multi-threaded programs.
Let's look at an example of using a timer to periodically update a component. The TumbleItem applet uses a timer to update its display at regular intervals. (To see this applet running, go to How to Make Applets. This applet begins by creating and starting a timer:
timer = new Timer(speed, this);
timer.setInitialDelay(pause);
timer.start(); 
The speed and pause variables represent applet parameters; as configured on the other page, these are 100 and 1900 respectively, so that the first timer event will occur in approximately 1.9 seconds, and recur every 0.1 seconds. By specifying this as the second argument to the Timer constructor,TumbleItem specifies that it is the action listener for timer events.After starting the timer, TumbleItem begins loading a series of images in a background thread. Meanwhile, the timer events begin to occur, causing theactionPerformed method to execute:
public void actionPerformed(ActionEvent e) {
    //If still loading, can't animate.
    if (!worker.isDone()) {
        return;
    }

    loopslot++;

    if (loopslot >= nimgs) {
        loopslot = 0;
        off += offset;

        if (off < 0) {
            off = width - maxWidth;
        } else if (off + maxWidth > width) {
            off = 0;
        }
    }

    animator.repaint();

    if (loopslot == nimgs - 1) {
        timer.restart();
    }
}
Until the images are loaded, worker.isDone returns false, so timer events are effectively ignored. The first part of the event handling code simply sets values that are employed in the animation control's paintComponent method: loopslot (the index of the next graphic in the animation) and off (the horizontal offset of the next graphic).Eventually, loopslot will reach the end of the image array and start over. When this happens, the code at the end of actionPerformed restarts the timer. Doing this causes a short delay before the animation sequence begins again.

Build your own Java library

Build your own Java library
Presented by developerWorks, your source for great tutorials
ibm.com/developerWorks
Table of Contents
If you're viewing this document online, you can click any of the topics below to link directly to that section.
1. Tutorial tips 2
2. Introduction to libraries 3
3. Design issue: Encapsulation 5
4. Design issue: Extensibility 8
5. Design issue: Debugging information 10
6. The source code 11
7. Wrapup 15
Build your own Java library Page 1
Section 1. Tutorial tips
Should I take this tutorial?
Code reuse is one of the Holy Grails of computer programming. Writing code that can be
easily reused is a difficult skill, but certainly one that can be mastered.
In this tutorial, you will learn:
* How the Java language can help you make a good, reusable library
* A few of the key principles of good library design
* The most efficient way to implement each of these ideas in the Java language
To illustrate these ideas, we'll walk through the design of a simple library.
To use this tutorial successfully, you'll need to have a basic understanding of Java
programming, including the ability to create, compile, and execute simple command-line
Java programs.
Objectives
When you complete this tutorial, you will:
* Know the major obstacles to code reuse
* Have a working knowledge of the ideas behind library design
* Know how to implement these ideas in the Java language
* Possess an excellent design of a Java library as a sample for future projects
Getting help
For questions about the content of this tutorial, please contact the author, Greg Travis, at
mito@panix.com .
Greg Travis is a freelance programmer living in New York City. His interest in computers can
be traced back to that episode of "The Bionic Woman" where Jamie is trying to escape a
building whose lights and doors are controlled by an evil artificial intelligence, which mocks
her through loudspeakers. Greg is a firm believer that, when a computer program works, it's
a complete coincidence.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 2
Section 2. Introduction to libraries
What is a library?
A library is a reusable software component that saves developers time by providing access
to the code that performs a programming task. Libraries exist to assist with many different
types of tasks.
Library design is difficult. It's easy to take an algorithm you've written and call it a library, but
it's harder to structure it in such a way that it can fit into someone else's program and still
perform the tasks it is designed to do without interfering with the original program's operation.
Most modern languages try to help the programmer create good libraries, and the Java
language is no exception. In this tutorial, you'll learn how the Java language can help you
make a good, reusable library.
Why reuse code?
There is no sense in reinventing the wheel. If there is code that can be reused, it should be.
Also, modern applications have become so large that it's inconceivable to even consider
writing them without the use of libraries.
But that's not the only reason. Even if you have no intention of distributing a piece of code,
creating it as a library can help you think more clearly about what it's supposed to do, thus
helping refine the design process.
Why aren't libraries used more often?
The answer to this question is simple: if you don't write a library yourself, you have no control
over the decisions that go into the crafting of it. And if the library behaves in a certain way
that is not acceptable, you'll be less likely to use it. You could modify the library to suit your
needs, but that might break compatibility. And, sometimes, rewriting something yourself is
faster (and less stressful) than trying to understand someone else's code.
It is possible to make libraries simpler and more flexible, and therefore more useful for a
wider range of programs. But no library is going to be perfect for every possible application.
Still, it's possible to design and code libraries in such a way as to maximize their ease of use.
Put yourself in the user's shoes
When designing a library, it's important to put yourself in the place of the person who is going
to be using the library. Ask these questions:
* What problem will the library solve? (For example, what should the end result be?)
* What details do the users care about? (For example, how do they want to get to the end
results?)
* What details would the users rather forget about? (For example, what elements and
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 3
operations do they want other parts of the program to handle?)
In the final analysis, good library design involves a bit of psychology. Sure, your code works
well, but does it seem like it works well? When people hear or read about it, will they say to
themselves, "Wow, that's exactly what I need and exactly how I would have done it myself!"
A sample library
Our objective is to learn how the Java language can help to build an effective library. To
achieve this goal, we'll discuss the design of a simple library that facilitates implementing
network servers.
When creating a network server, there are a number of issues to consider:
* Listening on a socket
* Accepting connections
* Getting access to the streams represented by a connection
* Processing the incoming data in some way, and sending back a response
Our sample library is going to take care of the first three issues, leaving the fourth
consideration for the library user to implement.
The main class in the library is called Server, and the test class that uses it is called
EchoServer. The latter implements a simple, serial-connection server that takes data from
the client and sends it right back. We'll talk about EchoServer on page 11in Section 6.
Design issues and practical implementations
The following sections cover the design issues of encapsulation, extensibility, and
debugging. Each section deals with a single design issue and then discusses how the issue
can be handled using the Java language.
The design principles themselves are not language dependent -- they can be applied to the
design of libraries in any language.
Nevertheless, pay special attention to the implementation details; sometimes, they can
illustrate a theoretical point better than a conceptual description can.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 4
Section 3. Design issue: Encapsulation
What is encapsulation?
A library should function as a tight, self-contained unit rather than a scattered collection of
objects whose functions and relationships are unclear.
The practice of making a library self-contained is called encapsulation.
What is a package?
The Java language provides an explicit mechanism for class-file-level encapsulation:
packages. A package is a group of Java class files that are stored in a single directory; a
package has a namespace to itself.
The advantage of giving a set of classes its own namespace is that you don't have to worry
about namespace conflicts.
In our example, the main class has a fairly common name -- Server. It wouldn't be
surprising if we eventually ran into a class in another library that had the same name. Putting
the class in its own namespace takes care of any conflicts this might cause.
In the next few panels, I'll illustrate how to put a class into a package.
Packages have names
Every package has a name that consists of a set of strings separated by periods, such as
java.lang or javax.swing.plaf.basic.
In fact, the full name of any class consists of the name of its package, followed by its own
name, as in java.lang.Object or javax.swing.plaf.basic.BasicMenuBarUI.
Note that there is a special package called the default package. If you don't put your class
into a specific package, then it is assumed to be in the default package.
Package names correspond to directories
Each package maps directly onto a subdirectory in the filesystem. This correspondence
allows the Java virtual machine (JVM) to find classes at run time.
You can convert a package name into a subdirectory path by replacing the periods with "/"
(or whatever symbol your operating system uses to separate directory names). For example,
java.lang.Object is stored in the file java/lang/Object.java.
A class in the default package is placed in the current directory.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 5
Classes declare their packages
To make sure a class is in the right package and in the right directory, a class must declare
he package that it is in.
The declaration looks like this:
// Server.java
package mylib;
public class Server implements Runnable
{
// ...
Other classes can import packages
To use a class that lives in another package, you can reference it by its full name, such as
mylib.Server. For example:
mylib.Server server = new mylib.Server( portNum );
It can be tedious to type out the full package name for a class, so you can take a shortcut
and import the package like this:
import mylib.*;
// ...
Server server = new Server( portNum );
It's also possible to import a single class:
import mylib.Server;
// ...
Server server = new Server( portNum );
Choosing public classes
The Java language also allows you to decide which classes in a package are visible to the
outside.
A public class can be accessed by code in any other package, while a private class can only
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 6
be used within its own package.
It's important to make public only those classes you want people to use directly.
Designing the interface to a public class takes more care than designing one for a private
class because the interface for a public class must be crafted to be as clear as possible for
the user. A private class doesn't need to have as tidy an interface.
Making a class public requires using the public keyword on the first line of the class
declaration:
// Server.java
package mylib;
import java.io.*;
import java.net.*;
public class Server implements Runnable
{
To make a class private, you simply leave the public keyword off. In our Server example,
there's a private class in the same package called Reporter, which reports periodically on
the condition of the Server object. Here is how it is declared:
// Reporter.java
package mylib;
class Reporter implements Runnable
{
Encapsulation summary
As we've seen, the Java language provides a few features that were created specifically for
defining the boundaries of your code.
By dividing code into packages and by defining classes as public or private, you can make
precise decisions about what the user of the library must deal with when they are using your
library.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 7
Section 4. Design issue: Extensibility
Inheritance
Encapsulation defines boundaries around a piece of code. All object-oriented programming
languages provide a mechanism for extending a piece of code without violating these
boundaries. In the Java language, this mechanism is provided by inheritance.
Customization through inheritance
The main class in our example library is called Server. If you look at the source code for this
class, you'll see that, by itself, it does nothing.
The main loop (which runs in a separate thread) listens for incoming connections. When one
comes in, it hands it off to a method called handleConnection(), as shown here:
// subclass must supply an implementation
abstract public void handleConnection( Socket s );
There is no default implementation, and so the class is declared abstract, which signals
the user to supply an implementation. EchoServer implements this method:
// This is called by the Server class when a connection
// comes in. "in" and "out" come from the incoming socket
// connection
public void handleConnection( Socket socket ) {
try {
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// just copy the input to the output
while (true)
out.write( in.read() );
} catch( IOException ie ) {
System.out.println( ie );
}
}
You can think of this process as a type of customization: the class that does most of the work
(Server) is incomplete; the subclass (EchoServer) completes it by adding an
implementation of the method handleConnection().
Plan for hooks
It's important to think ahead to the kinds of customizations a user of your library is going to
want to make. The previous example was obvious -- you have to provide a way for the
subclass to actually use the incoming connections or your program won't do anything useful.
But if you don't think ahead, some other customizations might not occur to you. Instead,
they'll occur to the user, who will wish that you had thought of them in the first place.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 8
In our sample library, there is a method in Server called cleanUp(). This method is called
by the server's background thread just before it exits. The base server doesn't need to do
anything in this method, so it is empty:
// Put any last-minute clean-up stuff in here
protected void cleanUp() {
}
Note: Do not declare this method abstract, as it would require the user to implement this
method, which, in some cases, isn't necessary.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 9
Section 5. Design issue: Debugging information
Why should you plan for debugging?
A scenario: Your library works perfectly. The user needs to do nothing more than learn the
API and use the code. Right?
Wrong. This scenario never (or rarely) happens. Bugs are unavoidable; debugging is
inevitable.
At some point, a user is going to have a problem and will need to know exactly what is going
on inside the library. The bug could be in the library itself, or it could be a bug in the user's
code that is only triggered inside the library.
A little text goes a long way
If you supply the source with your library, a user might consider using a debugger, but you
shouldn't count on that.
A better way to counter this inevitable problem is to add debugging println() statements
to your code to force each piece of the code to report on what it is doing. Watching this
information can often help the user know where something is going wrong.
The following example demonstrates this technique. The user's code can install a
PrintStream object by calling the static method Server.setDebugStream(). Once
implemented, the debug information will be sent to the provided stream.
// set this to a print stream if you want debug info
// sent to it; otherwise, leave it null
static private PrintStream debugStream;
// call this to send the debugging output somewhere
static public void setDebugStream( PrintStream ps ) {
debugStream = ps;
}
You can then sprinkle your library with calls to the debug() method:
// send debug info to the print stream, if there is one
static public void debug( String s ) {
if (debugStream != null)
debugStream.println( s );
}
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 10
Section 6. The source code
Our sample library
Before we wrap up, take a look at the complete source code, which includes EchoServer,
mylib.Server, and mylib.Reporter.
EchoServer
// $Id$
import java.io.*;
import java.net.*;
import mylib.*;
public class EchoServer extends Server
{
public EchoServer( int port ) {
// The superclass knows what to do with the port number, we
// don't have to care about it
super( port );
}
// This is called by the Server class when a connection
// comes in. "in" and "out" come from the incoming socket
// connection
public void handleConnection( Socket socket ) {
try {
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// just copy the input to the output
while (true)
out.write( in.read() );
} catch( IOException ie ) {
System.out.println( ie );
}
}
protected void cleanUp() {
System.out.println( "Cleaning up" );
}
static public void main( String args[] ) throws Exception {
// Grab the port number from the command-line
int port = Integer.parseInt( args[0] );
// Have debugging info sent to standard error stream
Server.setDebugStream( System.err );
// Create the server, and it's up and running
new EchoServer( port );
}
}
mylib.Server
// $Id$
package mylib;
import java.io.*;
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 11
import java.net.*;
abstract public class Server implements Runnable
{
// the port we'll be listening on
private int port;
// how many connections we've handled
int numConnections;
// the Reporter that's reporting on this Server
private Reporter reporter;
// set this to true to tell the thread to stop accepting
// connections
private boolean mustQuit = false;
public Server( int port ) {
// remember the port number so the thread can
// listen on it
this.port = port;
// the constructor starts a background thread
new Thread( this ).start();
// and start a reporter
reporter = new Reporter( this );
}
// this is our background thread
public void run() {
ServerSocket ss = null;
try {
// get ready to listen
ss = new ServerSocket( port );
while( !mustQuit ) {
// give out some debugging info
debug( "Listening on "+port );
// wait for an incoming connection
Socket s = ss.accept();
// record that we got another connection
numConnections++;
// more debugging info
debug( "Got connection on "+s );
// process the connection -- this is implemented
// by the subclass
handleConnection( s );
}
} catch( IOException ie ) {
debug( ie.toString() );
}
debug( "Shutting down "+ss );
cleanUp();
}
// the default implementation does nothing
abstract public void handleConnection( Socket s );
// tell the thread to stop accepting connections
public void close() {
mustQuit = true;
reporter.close();
}
// Put any last-minute clean-up stuff in here
protected void cleanUp() {
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 12
}
// everything below provides a simple debug system for
// this package
// set this to a print stream if you want debug info
// sent to it; otherwise, leave it null
static private PrintStream debugStream;
// we have two versions of this ...
static public void setDebugStream( PrintStream ps ) {
debugStream = ps;
}
// ... just for convenience
static public void setDebugStream( OutputStream out ) {
debugStream = new PrintStream( out );
}
// send debug info to the print stream, if there is one
static public void debug( String s ) {
if (debugStream != null)
debugStream.println( s );
}
}
mylib.Reporter
// $Id$
package mylib;
class Reporter implements Runnable
{
// the Server we are reporting on
private Server server;
// our background thread
private Thread thread;
// set this to true to tell the thread to stop accepting
// connections
private boolean mustQuit = false;
Reporter( Server server ) {
this.server = server;
// create a background thread
thread = new Thread( this );
thread.start();
}
public void run() {
while (!mustQuit) {
// do the reporting
Server.debug( "server has had "+server.numConnections+" connections" );
// then pause a while
try {
Thread.sleep( 5000 );
} catch( InterruptedException ie ) {}
}
}
// tell the background thread to quit
public void close() {
mustQuit = true;
}
}
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 13
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 14
Section 7. Wrapup
Revisiting the design issues
In this tutorial, we've looked at some concrete ways in which the Java language eases the
creation of a good, reusable library. We've also explored some of the theory upon which
these language features are based.
A good library is one that conveys its internal structure clearly so that the user knows how to
use it without knowing how it works internally.
Encapsulation serves the purpose of tightening and clarifying the interface to your code,
which makes it more reliable and easier to understand.
Extensibility allows you to create a library that does a single thing well, leaving the user to
fill in the missing parts and to re-purpose the library to meet user-specific needs. Because
the Java language is object oriented, the method is clear: inheritance provides a way to
customize code without having to know all the details of the code you are customizing.
Finally, providing a way to get debugging information from your code helps users find their
own bugs (or yours!), again without having to know every detail of the library's
implementation.
Resources
Following is a listing of additional readings to help solidify your understanding of libraries:
* Take a look at " Techniques for adding trace statements to your Java application "
(developerWorks, January 2001) for some more advanced ideas about adding
extensive debugging output to your library.
* Peter Haggar offers advice for how to use the Java libraries judiciously (IBM
PartnerWorld for Developers).
* Frameworks are an excellent conceptual tool for designing reusable code. "
Frameworks save the day " (developerWorks, October 2000) explores frameworks using
Java technology.
* The October 1998 issue of Web Techniques is dedicated to Java frameworks.
* Brush up on import and packages in the The Java Language Specification .
Your feedback
Please let us know whether this tutorial was helpful to you and how we could make it better.
We'd also like to hear about other tutorial topics you'd like to see covered. Thanks!
For questions about the content of this tutorial, contact the author, Greg Travis, at
mito@panix.com .
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 15
Colophon
This tutorial was written entirely in XML, using the developerWorks Toot-O-Matic tutorial
generator. The Toot-O-Matic tool is a short Java program that uses XSLT stylesheets to
convert the XML source into a number of HTML pages, a zip file, JPEG heading graphics,
and PDF files. Our ability to generate multiple text and binary formats from a single source
file illustrates the power and flexibility of XML.
Presented by developerWorks, your source for great tutorials ibm.com/developerWorks
Build your own Java library Page 16