J Sharp

הבהרה: הכותרת הנכונה של המאמר היא #J. סימן ה־# הוחלף מפאת הגבלות טכניות.

#J (מבוטא בעברית: ג'יי שארפ) היא שפת תכנות אימפרטיבית, מובנית, ומונחית עצמים מבית מיקרוסופט שנועדה לשמש כשפת מעבר למתכנתי ++J ו־Java, על מנת שיוכלו להשתמש בידע ובאפליקציות הנוכחיות שלהם בסביבת־ של מיקרוסופט. השפה הוצגה לראשונה בשנת 2002 ופיתוחה הופסק בשנת 2007. התמיכה לגרסה הסופית של #J הסתיימה באוקטובר 2017. היא פותחה במרכז הפיתוח של מיקרוסופט בהייטק סיטי בהיידראבאד, הודו.

הבדלים בסיסיים בין #J ו-Java 
שתי השפות משתמשות באותו תחביר כללי אך נעשו מספר שינויים ב-#J על מנת שתתמוך בסביבת . לדוגמה, על מנת להשתמש בתכונות ב-  עם מחלקה סטנדרטית של JavaBeans, יש לכתוב לפני כן פעולות setter (אתחול תכונות) ו־getter (אחזור תכונות) את ההערה הבאה:
/** @beanproperty */
ולשנות את שם המשתנה הפרטי (משתנה שניתן לגשת אליו ישירות מהמחלקה בו הוא נמצא בלבד - private)  כדי שיהיה שונה מהסיומת של שמות ה־getXxx ו־setXxx.

 לא ממירה קוד מקור בשפת Java ל-Java Bytecode (קובצי class.) ולא תומכת בפיתוח java applet או יכולה להחזיק applets ישירות בדפדפן אינטרנט, אם כי היא כן מספקת  פעולת מעטפת (Wrapper)  הנקראת "Microsoft J# Browser Control" אשר מאחסנת אותם כ־ActiveX. לבסוף, Java Native Interface (או בקיצור, JNI, ) ו־Raw Native Interface (או בקיצור, RNI) מוחלפים ב־P/Invoke; #J לא תומכת ב־Remote Method Invocation (או בקיצור: RMI).

ציטוט ממגזין InfoWorld (בתרגום לעברית) על השפה: הממשק של #J ל־NET Framework. הוא יציב, אך לא רציף ומגובש כמו של #C. בפרט, קוד בשפת #J לא יכול להגדיר תכונות, אירועים, דלגייטים (delegates) ו־Value types חדשים. #J יכול להשתמש במבני הנתונים הללו אם הם מוגדרים באסמבלי וכתובים בשפה אחרת, אך זו חוסר היכולת של #J להגדיר מבני נתונים חדשים אשר מגבילה את השפעתה ואת התפעוליות הבינית (היכולת להעביר מידע בין מערכות באופן שימושי) שלה.

ראו גם 
 #C – שפת תכנות
 ++J – שפת תכנות
 Java – שפת תכנות
  – שכבת תוכנה של מיקרוסופט

קישורים חיצוניים 
 
 Visual J# Design Choices: A Conversation with Pratap Lakshman at the Wayback Machine (archived 2007-04-16)
 P/Invoke
 J# בוויקיפדיה האנגלית

הערות שוליים

תוכנות שהושקו ב-2002
שפות תכנות